주어진 문자열이 팰린드롬인지 확인하라. 대소문자를 구분하지 않으며 영문자와 숫자만을 대상으로 한다.
팰린드롬이란, 앞에서 읽든 뒤에서 읽든 같은 문장을 뜻한다.
먼저, 주어진 입력에서 여백, 공백, 특수문자 등을 지우고 숫자와 영문자만 남도록한다. 그 후, 소문자로 바꾸어 준다.
s = re.sub(r'[^a-zA-Z0-9]', '', s).lower()
내장 라이브러리 re를 사용하였고, sub 함수를 통해 a~Z와 0~9를 제외한 모든 문자를 제거하였고, lower함수를 통해 소문자로 만들었다.
그 다음, 플래그를 하나 만든 뒤 앞에서부터 체크하며 뒷 문자와 다른것이 False를 그렇지 않다면 True를 리턴하도록 하였다.
for i in range(0, len(s) // 2):
if s[i] != s[-i-1]:
return False
return True
전체 코드는 아래와 같다.
import re
class Solution:
def isPalindrome(self, s: str) -> bool:
s = re.sub(r'[^a-zA-Z0-9]', '', s).lower()
for i in range(0, len(s) // 2):
if s[i] != s[-i-1]:
return False
return True
'코딩테스트 > 알고리즘' 카테고리의 다른 글
[Q. 03] 로그 파일 재정렬 (0) | 2023.03.15 |
---|---|
[Q. 02] 문자열 뒤집기 (0) | 2023.03.15 |
[Q7] 두 수의 합 (0) | 2022.12.17 |
[Q6] 가장 긴 팰린드롬 부분 문자열 (0) | 2022.12.01 |
[Q4] 가장 흔한 단어 (0) | 2022.12.01 |