팰린드롬 (Palindrome)

김태인·2022년 9월 5일
0

알고리즘

목록 보기
5/9

'팰린드롬'이란?

  • 앞뒤가 똑같은 단어나 문장
  • 뒤집어도 같은 말이 되는 단어 또는 문장을 팰린드롬(Palindrome)이라고 한다
  • 우리말로는 '화문'이라고 부름
  • '소주 만 병만 주소' 같은 문장이 이에 해당 (거꾸로 해도 소주 만 병만 주소)

리스트로 변환 풀이

class Solution:
    def isPalindrome(self, s: str) -> bool:
        strs =[]
        for char in s:
        	#isalnum으로 영문자, 숫자 여부를 판별
            if char.isalnum():
            
            	#lower를 활용하여 소문자로 변환
                strs.append(char.lower())
                print(strs)
                
        #팰린드롬 판별 여부
        while len(strs) > 1:
            if strs.pop(0) != strs.pop():
                return False
        return True

데크 자료형을 이용한 최적화

class Solution:
    def isPalindrome(self, s: str) -> bool:
        # 자료형 데크로 선언
        strs: Deque = collections.deque()
            
        for char in s:
            if char.isalnum():
                strs.append(char.lower())
                
        while len(strs) > 1:
            if strs.popleft() != strs.pop():
                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] #슬라이싱
profile
코딩이 취미가 되는 그날까지

0개의 댓글