https://leetcode.com/problems/valid-palindrome/
문제
함수에 입력한 단어가 팬린드롬인지 확인하는 함수를 작성하여라
거꾸로 해도 똑같은 영어단어 - palindrome(회문)
'회문 영어단어'에 대해 알아보았다. 여기서 '회문(回文)'은 거꾸로 읽어도, 제대로 읽어도, 앞뒤 어느 쪽에서 읽어도, 똑같은 말이 되는 단어나 구문을 뜻하며, 영어로는 'palindrome[팰린드롬]'이라고 한다. 영어 회문 중에서 쉽고 친숙한 단어는 붉은색으로 따로 구분해서 표시했다.
풀이 및 해석(주석)
#1. 리스트를 활용한 방법
def func(s):
s = s.lower() # 일단 소문자화
alnum = [] # 새로운 리스트를 만들어 준다.
for i in s: # 받은 문자열을 순회해준다. 이때 공백도 포함이 된다
if i.isalnum(): # 문자열이 알파벳이거나 숫자인경우에
alnum.append(i) # 새로만든 리스트에 저장
if alnum == alnum[::-1]: # 리스트가 거꾸로해도 똑같은 경우
return True
else:
return False
print(func('a@b :b a')) # True
print(func('won')) # False
print(func('A man, a plan, a canal: Panama')) # True
2. re 모듈을 활용한 방법
import re #re 모듈을 불러온다.
def func(s) -> bool: # 함수를 bool타입으로 설정
s = s.lower() # 일단 소문자화 시켜준다.
s = re.sub('[^0-9a-z]', '', s)
# re.sub('[]')에서 [^a-z]등으로 설정하면 ^다음에 입력한 값들 이 아닌건 ''으로 없애준다.
# 앞에 ^를 안해주면 a-z 즉, 알파벳을 ''으로 없애주는 기능이 적용된다.
return s == s[::-1] #거꾸로 해서 일치하는지를 리턴
print(func('a@b :b a')) # True
print(func('won')) # False
print(func('A man, a plan, a canal: Panama')) # True
'리트코드' 카테고리의 다른 글
리트코드 733 Flood Fill (0) | 2022.09.24 |
---|---|
리트코드 561 배열 파티션Ⅰ(파이썬) (0) | 2022.08.08 |
리트코드 15 세 수의 합 (파이썬) (0) | 2022.08.06 |
리트코드 42 빗물 트래핑 (파이썬) (0) | 2022.08.06 |
리트코드 5 가장 긴 팰린드롬 부분 문자열 (파이썬) (0) | 2022.08.05 |