[LeetCode] 125. Valid Palindrome (유효한 팰린드롬)

yunan·2021년 1월 14일
0
post-thumbnail

🔦 문제 링크

🔊 파이썬 알고리즘 인터뷰 책을 참고했습니다.

문자열이 팰린드롬인지 검사하는 문제 (문자열은 대소문자를 구분하지 않는 영문자와 숫자로 구성되어져 있음)

✍️ 풀이


  1. 문자열은 대소문자를 구분하지 않는 영문자숫자 이므로 나머지는 제외한 배열을 만든다.
  2. 배열의 앞부분 - 중앙 - 뒷부분을 문자를 비교해 모두 같으면 팰린드롬 아니면 그냥 문자열이다.

🛠 코드

  • 리스트를 원소를 앞-뒤로 검사하는 가장 기본적인 풀이방법이다.

class Solution:
    def isPalindrome(self, s: str) -> bool:
        li = []
        for c in s:
            if c.isalnum():
                if c.isalpha():
                    c = c.lower()
                li.append(c)

        for i in range(int(len(li) / 2)):
            if li[i] != li[len(li) - 1 - i]:
                return False
        return True

✍️ 다른 사람 풀이


  • 정규식을 통해 나온 매우 간단한 풀이법이다.

🛠 다른 사람 코드


    def isPalindromeBySlicingAndRE(self, s: str) -> bool:
        s = s.lower()
        # 정규식 활용
        s = re.sub('[^a-z0-9]', '', s)

        return s == s[::-1]

📝 정리


  • 문자열 슬라이싱 사용법
  • re 사용법

🎈 참고


Book 링크

profile
Go Go

0개의 댓글