leetcode 344. Reverse String
Reverse String - LeetCode
Can you solve this real interview question? 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 [https://en.wikipedia.org/wiki/In-place_algo
leetcode.com
문제
문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며, 리턴 없이 리스트 내부를 직접 조작하라.
Example 1:
Input: s = ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
Example 2:
Input: s = ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]
내 풀이
class Solution:
def reverseString(self, s: List[str]) -> None:
s.reverse()
이 문제를 봤을 때 떠올랐던 생각은 저번 1번에서 슬라이싱, 리스트 reverse(), reversed() + join(), for 반복, while 반복, 재귀 등을 쓴 파이썬 문자열 처리 실행시간 표가 떠올랐다. reverse() 함수를 썼더니 간단하게 해결하였다.
책 풀이1 - 투 포인터를 이용한 스왑
투 포인터 : 2개의 포인터를 이용해 범위를 조정해가며 풀이하는 방식
리턴 없이 리스트 내부를 직접 조작하라 -> s 내부를 스왑하는 형태로 풀이
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
책 풀이2 - 파이썬다운 방식
reverse() 함수 이용
def reverseString(self, s:List[str]) -> None:
s.reverse()
원래 s = s[::-1] 도 되는데 이 문제의 경우에는 공간 복잡도를 O(1)로 제한해서 오류뜸
s[:] = s[::-1] 로 하면 잘 동작한다.
class Solution:
def reverseString(self, s: List[str]) -> None:
s[:] = s[::-1]
<참고>
책 : 파이썬 알고리즘 인터뷰
책 풀이 코드 출처
GitHub - onlybooks/python-algorithm-interview: <파이썬 알고리즘 인터뷰> 95가지 알고리즘 문제 풀이로 완성
<파이썬 알고리즘 인터뷰> 95가지 알고리즘 문제 풀이로 완성하는 코딩 테스트. Contribute to onlybooks/python-algorithm-interview development by creating an account on GitHub.
github.com
'공부기록 > 파이썬' 카테고리의 다른 글
[파이썬 알고리즘 인터뷰] 1. 유효한 팰린드롬 (leetcode 125) (1) | 2024.01.10 |
---|---|
[파이썬][문제] map(int, input().strip().split(' ')) (2) | 2024.01.03 |
[파이썬][CodeUp]기초100문제 (0) | 2024.01.02 |
[파이썬] 자료구조 (2) 파이썬 기본문법 (0) | 2024.01.02 |
[파이썬] 자료구조 (1) 순환 알고리즘 (0) | 2024.01.02 |