6장_2 문자열 조작(문자열 뒤집기)

문자열을 반대로 하는 함수를 작성합니다. 입력 문자열은 문자 배열로 제공됩니다. 단 리턴없이 리스트 내부를 스스로 조작해야한다.
예 1:
Input: s = ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
예 2:
Input: s = ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]

1. 투포인터를 이용한 스왑

class Solution:
    def reverseString(self, s: List[str]) -> None:
        """
        Do not return anything, modify s in-place instead.
        """
        left, right = 0, len(s) -1 
        while left < right:
            s[left], s[right] = s[right], s[left]
            left += 1
            right -= 1

left와 right는 0으로 초기화하고 길이값은 1만큼 빼준것을 초기화한뒤 left는 1씩 증가시키고 반대로 right는 1씩 감소시켜주다가 left가 right보다 커지기 전까지 서로를 교체해준다.

파이썬의 기본 기능을 이용하면 이것보다도 훨신 간단하게 단 한줄로 쉽게 풀이할 수도 있다.

단, reverse()는 리스트에서만 사용할 수 있다.

또 6장 1번에서 배운 것과 같이 리스트로도 표현할 수 있다.

s = s[::-1]는 왜 안되나 생각할 수도 있는데 이 문제는 공간 복잡도를 O(1)로 제한하다 보니 변수 할당을 처리하는데 다소 제약이 있다.

좋은 웹페이지 즐겨찾기