문제
리트코드 344. Reverse String
난이도: ⭐
Write a function that reverses a string. The input string is given as an array of characters s.
(문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며, 린턴 없이 리스트 내부를 직접 조작하라.)
예시
Input: s = ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
나의 풀이: 슬라이싱
class Solution:
def reverseString(self, s: List[str]) -> None:
s = s[::-1]
----------------------------------------------------
결과: 오류
원래는 s[::-1]도 정상적으로 처리되어야 하지만, 이 문제는 공간 복잡도를 O(1)로 제한하다 보니 변수 할당을 처리하는데 다소 제약이 있다. 이 때 다음과 같은 트릭을 사용하면 잘 동작한다. s[:] = s[::-1]
풀이 2: Pythonic way
class Solution:
def reverseString(self, s: List[str]) -> None:
s.reverse()
-----------------------------------------------------
결과: 통과, 48ms
풀이 3: 투 포인터 이용
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
------------------------------------------------
결과: 통과, 런타임 52ms