본문 바로가기

컴퓨터/코테

릿코드 5 - Longest Palindromic Substring

class Solution:
    def longestPalindrome(self, s: str) -> str:
        answer = [0, 0]
        for i in range(1, len(s)-1):
            l, r = i, i
            while True :
                if s[l] == s[r]:
                    l, r = l - 1, r + 1
                    if l == -1 or r == len(s):
                        l, r = l + 1, r - 1
                        break
                else :
                    l, r = l + 1, r - 1
                    break
            if answer[1] - answer[0] < r - l:
                answer = [l, r]
        for i in range(0, len(s) - 1):
            if s[i] == s[i + 1]:
                l, r = i, i + 1
                while True :
                    if s[l] == s[r]:
                        l, r = l - 1, r + 1
                        if l == -1 or r == len(s):
                            l, r = l+1, r-1
                            break
                    else :
                        l, r = l + 1, r - 1
                        break
                if answer[1] - answer[0] < r - l:
                    answer = [l, r]
        return s[answer[0] : answer[1] + 1]