[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) 编辑 收藏 举报