문제) 문자열이 팰린드롬인지 확인하라. 대소문자를 구분하지 않으며, 영문과 숫자만을 대상으로 한다.
def isPalindraome1(str: str) -> bool:
strs = []
for char in str:
if char.isalnum():
strs.append(char.lower())
while len(strs) > 1:
if strs.pop(0) != strs.pop():
return False
return True
input :str ="A man, a plan, a canal: panama"
s= Solution()
test= isPalindraome1(input)
-strs의 자료형을 deque로 바꿔주는것만으로도 속도를 높일 수 있다.
리스트의 pop이 o(0)인데 반해 데크의 pop.left()는 o(1) 이기때문에
거의 5배 가까이 성능차이가 난다.
-정규표현식으로 필터링, 리턴된 문자열 리스트와 문자열 리스트를 슬라이싱으로 뒤집어 비교 2번과 비교해 2배정도 차이가 남