파이썬 알고리즘 인터뷰 문제 1번(리트코드 125번) Valid Palindrome
https://leetcode.com/problems/valid-palindrome/description/
abba는 뒤집어도 abba니까 True
abca는 뒤집으면 acba로 다르니까 False를 반환하는 문제
그런데 주어진 문자열에 특수 문자 등이 섞여 있을수 있고,
우리는 알파벳, 숫자만 고려해서 판단해야한다.
class Solution:
def isPalindrome(self, s: str) -> bool:
temp = []
for char in s:
if char.isalnum():
temp.append(char.lower())
return temp == temp[::-1]
문자열을 순회하며 .isalnum()으로 문자 또는 숫자인 지 판단하여 맞다면 temp = [] 리스트에 .lower()이용하여 소문자로 바꾸어 추가한다.
마지막으로 temp == temp[::-1]인지 판단한다.
import re
class Solution:
def isPalindrome(self, s: str) -> bool:
cleaned = re.sub(r"[^a-zA-Z0-9]", "", s.lower())
return cleaned == cleaned[::-1]
정규 표현식에 능숙하지 않은데, 상당히 강력한 기능이므로 잘 알아두자.
정규 표현식에 대한 글
https://velog.io/@coding_study/정규식-활용-예시