Leetcode Python - 5. Longest Palindromic Substring

Leetcode #5 - Longest Palindromic Substring

이제 blind 75 leetcode를 풀어보겠습니다. https://leetcode.com/discuss/interview-question/460599/Blind-75-LeetCode-Questions

리트코드의 문제 5 ‘Longest Palindromic Substring’을 파이썬으로 풀어 보도록 하겠습니다.

discuss 참고, 포인트는 2 케이스로 나누어서 (aba, abba) 진행합니다.

전체 코드는 아래와 같습니다.

class Solution:
    def longestPalindrome(self, s: str) -> str:
        res = ''
        for i in range(len(s)):
            tmp = self.findPalindrome(s, i, i)
            if len(res) < len(tmp):
                res = tmp
            
            tmp = self.findPalindrome(s, i, i+1)
            if len(res) < len(tmp):
                res = tmp        
        return res

            
    def findPalindrome(self, s, l, r):
        while 0<=l and r<len(s) and s[l] == s[r]:
            l -= 1
            r += 1
        return s[l+1:r]
        

시간복잡도는

  • O(n^2) : 이중 루프

공간복잡도는

  • O(n) : 최악의 경우 s와 같은 크기의 res를 만듦