투 포인터를 이용한 전통적인 방식은 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
class Solution:
def reverseString(self, s: List[str]) -> None:
s.reverse()
s = s[::-1]
로 풀 수 있으나 리트코드에서 오류가 발생된다. 이 문제는 공간 복잡도 로 제한하다 보니 변수 할당을 처리하는 데 다소 제약이 있다. 다음과 같은 트릭을 사용하면 잘 동작한다.
class Solution:
def reverseString(self, s: List[str]) -> None:
s[:] = s[::-1]