isinstance() : 데이터의 자료값을 확인하는 내장함수. 첫 번째 매개변수로는 확인하고자 하는 변수, 두 번째 매개변수로는 데이터의 타입을 입력한다.
isalnum() : 영문자, 숫자 여부를 판단하는 함수.
class Solution:
def isPalindrome(self, s: str) -> bool:
l = []
for i in s:
if i.isalnum():
l.append(i.lower())
if l == l[::-1]:
return True
else:
return False
팰린드롬 여부는 다른 방식으로도 판별할 수 있다.
while len(l) > 1:
if l.pop(0) != l.pop():
return False
return True
데크(popleft)를 사용한다면 속도를 더 높일 수 있다.
class Solution:
def isPalindrome(self, s: str) -> bool:
strs = collections.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
정규식을 이용한 슬라이싱을 사용한다면 가장 빠르게 해결 가능하다.
class Solution:
def isPalindrome(self, s: str) -> bool:
s = s.lower()
s = re.sub('[^a-z0-0]', '', s)
return s == s[::-1]