
내가 푼
- 리스트 풀이법
- 문자열.isalnum() : 문자열과 숫자만 ㅇㅋ하는 함수
class Solution:
def isPalindrome(self, s: str) -> bool:
tmp = []
s1 = s.lower()
for i in s1:
if i.isalpha() or i.isalnum():
tmp.append(i)
for i in range(1, (len(tmp)//2)+1):
if tmp[i-1] != tmp[-i]:
return False
return True

솔루션
- 데크 자료형 사용한 최적화
- 데크 사용 시 리스트보다 속도가 빨라진다!!
- 근데 책 정답보다 빠른거지, 내꺼보단 느림
- 나는 두 번재 for문을 절반만 돌려서 진행했는데
- 책에선 pop(0)과 pop() 둘을 비교했었다.
- 그래서 리스트 속도가 느렸던거
- pop(0)이 O(n)이니까!!
- 이 코드엔 pop()없음 - 내 코드 뒤에 붙인거라
from collections import deque
class Solution:
def isPalindrome(self, s: str) -> bool:
strs = deque()
for i in s:
if i.isalnum():
strs.append(i.lower())
for i in range(1, (len(strs)//2)+1):
if strs[i-1] != strs[-i]:
return False
return True

솔루션2
class Solution:
def isPalindrome(self, s: str) -> bool:
s = s.lower()
s = re.sub('[^a-z0-9]', '', s)
return s == s[::-1]
