본문 바로가기
Leetcode

[LeetCode] Valid Palindrome python (regex, filter, isalnum)

by YGSEO 2021. 4. 1.
728x90

36ms

import re
class Solution:
    def isPalindrome(self, s: str) -> bool:
        
        s = re.sub(r'[^\w]|_', '', s.lower())
        
        return s == s[::-1]

https://wikidocs.net/4308#_2

re를 사용해서 모든 alphanumeric가 아닌 것(^) or underscore를 빈문자열로 바꾼다.

 


다른 풀이

class Solution:
    def isPalindrome(self, s: str) -> bool:
        cleanedString = "".join(filter(str.isalnum, s.upper()) )
        return (0,1)[cleanedString == cleanedString[::-1]]

str.isalnum을 사용해서 filter 내장함수 사용

https://wikidocs.net/22803

return 으로는 tuple로 (0,1) 뒤에 인덱싱으로 조건을 사용했다. 처음 보는 방식

뒤의 bracket 조건이 false이면 0을 반환하기 때문에 tuple의 0번째 값을 return한다.

tuple (0,1)을 (0,2)로 바꿔보면 뒤의 조건이 참일 경우 2를 return함을 알 수 있다.

 

tuple로 T/F를 반환. 근데 왜 이렇게 하는 건지는 정확히 모르겠다.

아마 예전에는 저런 방식으로 return 해줘야 했기 때문에 그런거 같은 추측을 해본다.

728x90

댓글