2020-09-20-5. 最长回文子串

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

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

输入: "cbbd"
输出: "bb"

class Solution:
def longestPalindrome(self, s: str) -> str:

    size = len(s)
    if size == 0:
        return s
    res = s[0]
    def extend(i,j,s):
        while i>=0 and j <len(s):
            if s[i] == s[j]:
                i -=1
                j +=1
            else:
                break
        return s[i+1:j]

    for i in range(size-1):
        res1 = extend(i,i,s)  # 单数扩散
        res2 = extend(i,i+1,s)  # 双数扩散
        if max(len(res1),len(res2)) > len(res):
            res = res1 if len(res1) > len(res2) else res2 
    return res

中心扩散法

注意中可以是单个数 也可以是双数

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容