[LeetCode] 5. Longest Palindromic Substring

这道题可以用动态规划,但是其实中心枚举更直接并符合逻辑,需要注意的是,以每一个字母为中心查找最大的Palindromic string的时候是有两种情况,第一种是以这个单一字母为中心(aba),第二个是以这个和下一个字母一起为中心(abba)。

class Solution:
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        if len(s) == 0:
            return s
        n = len(s)
        longest = ""
        for middle in range(n):
            sub = self.findPalindrome(s, middle, middle)
            if len(sub) > len(longest):
                longest = sub
            
            sub = self.findPalindrome(s, middle, middle + 1)
            if len(sub) > len(longest):
                longest = sub
            
        return longest
    
    def findPalindrome(self, s, left, right):
        while (left >= 0 and right < len(s) and s[left] == s[right]):
            left -= 1
            right += 1
        return s[left+1: right]
        

 

posted on 2018-09-13 09:30  codingEskimo  阅读(78)  评论(0编辑  收藏  举报

导航