[리트코드] 125. Valid Palindrome - python 본문

코테 문제 풀이

[리트코드] 125. Valid Palindrome - python

미니모아 2022. 4. 13. 16:20
반응형

125. Valid Palindrome

문제

A phrase is a palindrome if, after converting all uppercase letters into lowercase letters and removing all non-alphanumeric characters, it reads the same forward and backward. Alphanumeric characters include letters and numbers.

Given a string s, return true if it is a palindrome, or false otherwise.

제한사항

  • 1 <= s.length <= 2 * 105
  • s consists only of printable ASCII characters.

풀이

1. 소문자로 다 바꾸기

2. 문자이거나 숫자 아닌 것 제거

3. 왼쪽 포인터와 오른쪽 포인터 비교

4. 같으면 한칸씩 움직이기

5. 다르면 펠린드롭 아님

6. 교차될 때 멈추기

class Solution:
    def isPalindrome(self, s: str) -> bool:
        s = s.lower()
        s = re.sub("[^a-z0-9]", "", s)
        
        start, end = 0, len(s) - 1
        
        while start < end:
            if s[start] != s[end]:
                return False
            start += 1
            end -= 1
        
        return True

제거하지 않고 지나치면서 확인하는 방법

class Solution:
    def isPalindrome(self, s: str) -> bool:
        
        beg, end = 0, len(s) - 1
        while beg <= end:
            while not s[beg].isalnum() and beg < end: beg += 1
            while not s[end].isalnum() and beg < end: end -= 1
            if s[beg] == s[end] or s[beg].upper() == s[end].upper():
                beg, end = beg + 1, end - 1
            else:
                return False
        return True
반응형
Comments