문자열 조작_2. Reverse String

Seoyong Lee·2021년 5월 29일
0

Algorithm / Data Structure

목록 보기
13/22
post-thumbnail

leetcode 344. Reverse String

문제

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

입출력예시

  • 입력: ["h", "e", "l", "l", "o"]
  • 출력: ["o", "l", "l", "e", "h"]

풀이

투 포인터(Two pointer)를 사용하는 전통적인 방식과 파이썬 내장 기능을 이용하는 Pythonic way로 나누어진다.

파이썬

투 포인터 스왑

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
  • runtime: 204 ms
  • memory: 18.7 MB

Pythonic way

def reverseString(self, s:List[str]) -> None:
    s.reverse()
  • runtime: 192 ms
  • memory: 18.5 MB

자바스크립트

const reverseString = (s) => {
    for (let i = 0, j = s.length - 1; i < j; i++, j--) {
        [s[i], s[j]] = [s[j], s[i]]
    }
};
  • runtime: 120 ms
  • memory: 46.7 MB

파이썬과 비슷하게 자바스크립트에서도 투 포인터를 이용한 스왑을 구현할 수 있다.

참고
파이썬 알고리즘 인터뷰

profile
코드를 디자인하다

0개의 댓글