LeetCode 344번 <문자열 뒤집기>

 

문제

문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며, 리턴 없이 리스트 내부를 직접 조작하라

풀이 1) 투 포인터를 이용한 스왑

투포인터에 대해서 간단하게 설명하자면 단어 그대로 2개의 포인터를 이용해 범위를 조정해가며 풀이하는 방식을 말한다. 여기서는 점점 더 범위를 좁혀 가며 스왑하는 형태로 풀이할 수 있다. 문제에서 ‘리턴 없이 리스트 내부를 직접 조작하라’는 제약사항이 있으므로 다음과 같이 s 내부를 스왑하는 형태로 풀이하면 된다

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) 파이썬 다운 방식

def reverseString(self, s: List(str)) -> None : 
    s.reverse()

or

def reverseString(self, s: List(str)) -> None: 
    s[:] = s[::-1]