[Leetcode] 344. Reverse String

bradley·2022년 6월 7일
1

Algorithm

목록 보기
7/12

Problem

Solution

1) 투 포인터(Two Pointer)를 이용한 스왑

투 포인터를 이용한 전통적인 방식은 2개의 포인터를 이용해 범위를 조정해가며 풀이하는 방식. 여기서는 점점 더 범위를 좁혀 가며 스왑하는 형태로 풀이.

리턴없이 리스트 내부를 직접 조작하라는 제약사항이 있으므로 s 내부를 스왑하는 형태로 풀이

class Solution:
    def reverseString(self, s: List[str]) -> None:
        left, right = 0, len(s) - 1
        
        while left < right:
            s[left], s[right] = s[right], s[left]
            left += 1
            right -= 1

2) 파이썬다운 방식(Pythonic way)

class Solution:
    def reverseString(self, s: List[str]) -> None:
        s.reverse()

3) 슬라이싱 이용

s = s[::-1] 로 풀 수 있으나 리트코드에서 오류가 발생된다. 이 문제는 공간 복잡도 O(1)O(1)로 제한하다 보니 변수 할당을 처리하는 데 다소 제약이 있다. 다음과 같은 트릭을 사용하면 잘 동작한다.

class Solution:
    def reverseString(self, s: List[str]) -> None:
        s[:] = s[::-1]
profile
데이터 엔지니어링에 관심이 많은 홀로 삽질하는 느림보

0개의 댓글