Valid Palindrome

박수빈·2022년 3월 18일
0

leetcode

목록 보기
45/51


문제

  • palindrome: 모두 소문자 하고, 알파벳과 숫자 아닌거 빼고 읽었을 때, 앞뒤 상관없이 똑같은 문자
  • palindrome인지 판별하라

풀이

  • 단순한 str 문제 같다
  1. 소문자화 하기
  2. 띄어쓰기 및 기호 없애기
  3. 비교하기
class Solution:
    def isPalindrome(self, s: str) -> bool:
        s = s.lower()
        validSet = set(map(str, 'abcdefghijklmnopqrstuvwxyz0123456789'))\
        
        newS = ''
        for letter in s:
            if letter in validSet:
                newS += letter
        
        for forward, backward in zip(newS, newS[::-1]):
            if forward != backward:
                return False
        return True

느릴 줄 알았는데 생각보다 꽤나 빠르다..

        if newS == newS[::-1]:
            return True
        else:
            return False

비교를 이런 방식으로 해도 시간 차이는 별로 없다.

정규표현식

import re
class Solution:
    def isPalindrome(self, s: str) -> bool:
        s = s.lower()
        pattern = re.compile('[a-z0-9]')
        newS = ''.join(pattern.findall(s))
        
        if newS == newS[::-1]:
            return True
        else:
            return False

문자와 숫자만 패턴으로 걸러서 비교했다.

그래도 쪨 빠르네

profile
개발자가 되고 싶은 학부생의 꼼지락 기록

0개의 댓글