-
[leetcode] 125.Valid PalindromeAlgorithm/1일 1코테 2021. 4. 14. 19:35반응형
문제
입력 문자열이 팰린드롬인지 확인하는 문제
leetcode.com/problems/valid-palindrome/
# 내 답 class Solution: def isPalindrome(self, s: str) -> bool: p = '' # 전처리한 str 담아줄 변수 for i in s: if i.isalpha() or i.isdigit(): # 알파벳이거나 숫자일때만 i = i.lower() # 소문자로 바꿔준 뒤 더해줌 p += i p2 = p[::-1] # 팰린드롬인지 비교하기 위해 뒤집음 for i in range(len(p)): if p[i] != p2[i]: # 0번째부터 하나씩 출력해서 다르면 False return False return True
isalpha() + isdigit() = isalnum()
모범 답안
class Solution: def isPalindrome(self, s: str) -> bool: # deque - 양쪽으로 삽입 및 삭제 가능 strs: Deque = collections.deque() for char in s: if char.isalnum(): # 알파벳과 숫자 둘 다 감별 strs.append(char.lower()) while len(strs) > 1: if strs.popleft() != strs.pop(): # popleft:왼쪽으로 삭제 return False return True
# 위의 방식보다 두배 빠른 방식 class Solution: def isPalindrome(self, s: str) -> bool: s = s.lower() # 정규식으로 불필요한 문자 필터링 s = re.sub('[^a-z0-9]', '', s) return s == s[::-1] #슬라이싱
반응형'Algorithm > 1일 1코테' 카테고리의 다른 글
[leetcode] 937. Reorder Log Files (0) 2021.04.28 [leetcode] 344. Reverse String (0) 2021.04.14 [🐉 백준 13단계] 백트래킹 (0) 2021.01.04 [🦩 프로그래머스] 하샤드수, 124 숫자의 나라 (0) 2020.12.28 [🦩 프로그래머스] 최솟값 만들기 / 3진법 뒤집기 (0) 2020.12.21