[leetcode] Valid Palindrom
2023. 1. 24. 15:36ㆍ알고리즘
- palindrom 문자열은 문자열의 모든 알파벳을 소문자로 바꾼 non-alphanumeric 문자를 제외한 문자열과 반전시킨 문자열이 같은 경우를 뜻함
- non-alphanumeric 문자 : 알파벳, 숫자가 아닌 문자
👉 palindrom 문자열인지 아닌지 리턴하는 알고리즘
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
s = s.lower()
answer = ''
for i in s:
if i.isalpha() or i.isdigit():
answer += i
return answer == answer[::-1]
- 문자열의 각 문자를 loop를 돌며 알파벳이나 숫자일 경우에만 answer
변수에 담아 이를 반전시킨 결과와 동일한지 true/false 여부를 리턴했다
- 그런데 뭔가 깔끔하지 않음
> answer
라는 별도의 변수를 선언하지 않는 방법을 생각해보자
정규표현식 사용
re.sub(pattern, replace, text)
: text 중 pattern에 해당하는 부분을 replace로 대체
import re
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
s = s.lower()
s = re.sub('[^a-z0-9]','',s)
return s == s[::-1]
- 우선 문자열 s
의 알파벳 대문자를 소문자로 치환한 다음, 알파벳 소문자가 아니거나, 숫자가 아닌 문자열을 정규 표현식 re.sub()
함수를 사용하여 제거했다.
- return 시에 문자열 슬라이싱을 이용하여 반전 문자열과 동일한지(palindrom인지) check
'알고리즘' 카테고리의 다른 글
[Python] 프로그래머스 Lv2. 수식 최대화 (2) | 2023.02.01 |
---|---|
[leetCode] 278. First Bad Version 풀이 (0) | 2023.01.24 |
[Python] 코딩테스트 연습 >2023 KAKAO BLIND RECRUITMENT > 개인정보 수집 유효기간 (0) | 2023.01.21 |
[Stack] leetCode 1944. Number of Visible People in a Queue 풀이 - Python (0) | 2022.08.15 |
2021 카카오 채용연계형 인턴십 > 숫자 문자열과 영단어 (0) | 2022.05.16 |