문제 링크:
https://leetcode.com/problems/reverse-string
문제는 다음과 같다.
Write a function that reverses a string. The input string is given as an array of characters s.
You must do this by modifying the input array in-place with O(1) extra memory.
문자열을 뒤집어야하는 문제이다.
인덱스마다 하나의 문자가 들어있는 리스트의 형태로 문자열이 주어지며, 이를 반대로 뒤집기만 하면 되는 간단한 문제이다.
이 문제는 두 번에 걸쳐서 발전시킬 수 있다.
def sol(s):
left, right = 0, len(s) - 1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
return s
두 개의 포인터를 사용하는 방식의 문제이다.
1. left, right 변수를 선언하고, 각각 배열의 첫 번째, 마지막 인덱스를 가리키도록 초기화한다.
2. left 포인터가 right포인터보다 커지지 않는 동안 (포인터가 교차되기 직전까지) while 루프를 반복하면서 left 값에 해당하는 인덱스의 값과 right 값에 해당하는 인덱스의 값을 교환한다.
3. 결과로 나오는 list s를 반환한다.
def sol(s):
s.reverse()
return s
2번풀이는 1번풀이에서 발전시킨 형태이다.
list에서 제공하는 reverse()라는 함수를 이용해서 단순하게 리스트를 뒤집을 수 있다.
list.reverse():
리스트를 뒤집는 함수이다.