最长回文子串

2019-03-18  本文已影响0人  Haward_

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

示例 1:

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

输入: "cbbd"
输出: "bb"
思想:(1)分回文长度是奇数和偶数两种情况(2)遍历,向中间两边扩散判断是否是回文。

class Solution:
    def longestPalindrome(self, s):
        if len(s) in [0,1]:
            return s
        res = ""
#回文长度是奇数
        for i in range(0,len(s)-1):
            p,q=i-1,i+1
            while p>=0 and q<=len(s)-1:
                if s[p]!=s[q]:
                    break
                p-=1
                q+=1
            if len(res)<len(s[p+1:q]):
                res = s[p+1:q]
   #回文长度是偶数            
        for i in range(0,len(s)-1):
            if s[i]!=s[i+1]:
                continue
            p,q=i-1,i+2
            while p>=0 and q<=len(s)-1:
                if s[p]!=s[q]:
                    break
                p-=1
                q+=1
            if len(res)<len(s[p+1:q]):
                res = s[p+1:q]
        return res 
上一篇 下一篇

猜你喜欢

热点阅读