LeetCode005-最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"
class Solution(object):

    def longestPalindrome(self, s):
        start = end = 0
        for i in range(len(s)):
            len1 = self.centerexpand(s,i,i)
            len2 = self.centerexpand(s,i,i+1)

            maxlen = max(len1,len2)

            if maxlen > end - start + 1:
                start = i - (maxlen-1)//2
                end = i + maxlen//2

        return s[start:end+1]


    def centerexpand(self,s,l,r):
        while l >= 0 and r < len(s) and s[l] == s[r]:
            l -= 1#计算到l=-1
            r += 1

        return r-l-1

s = Solution()
str = s.longestPalindrome('bab')
print(str)

猜你喜欢

转载自blog.csdn.net/rongpeisheng666/article/details/90066908
今日推荐