본문 바로가기

알고리즘

[파이썬 알고리즘 인터뷰] 가장 긴 팰린드롬 부분 문자열

728x90
 

Longest Palindromic Substring - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

중앙을 중심으로 확장하는 풀이

def longestPalindrome(self, s: str) -> str:
        def expand(left,right):
            while left>=0 and right<=len(s)-1 and s[left]==s[right]:
                left-=1
                right+=1
            return s[left+1:right]
            
        if len(s)<=1 and s==s[::-1]:
            return s
        
        sol=''
        for i in range(len(s)-1):
            sol=max(sol,expand(i,i+1),expand(i,i+2),key=len)
        
        return sol
  • 문자열보다 더 긴 길이를 슬라이싱하더라도 가장 마지막 문자까지 슬라이싱됨->문법 오류가 나지 않음
  • max() : key를 통해 기준 설정 가능

2, 3개짜리 틀을 슬라이싱하여 팰린드롬을 우선 찾고 이후 틀을 좌우로 확장하는 방법(중앙에서 확장하는 방법)을 통해 문제를 해결함.

반응형