Development/Algorithms
Valid Palindrome in python3
juniz
2020. 7. 29. 23:32
반응형
List only
def is_palindrom(s: str) -> bool:
strs = []
# Using deque
for char in s:
if char.isalnum():
strs.append(char.lower())
while len(strs) > 1:
if strs.pop(0) != strs.pop():
return False
return True
Using deque
from collections import deque
def is_palindrom(s: str) -> bool:
strs = deque([])
for char in s:
if char.isalnum():
strs.append(char.lower())
while len(strs) > 1:
if strs.popleft() != strs.pop():
return False
return True
Deque : Double-ended queue로 양쪽에서 값들을 수정할 수 있다.
pop: .popleft(), .pop()
append : .appendleft(), .append()
etc : .reverse()
Regex and slicing
import re
def is_palindrom(s: str) -> bool:
s = s.lower()
s = re.sub('[^a-z0-9]', '', s)
return s == s[::-1]
Time complexity 를 생각하면 slicing을 선택하는 것이 바람직하다.
반응형