最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。

def longestPalindrome(s):
    """
    """
    length = len(s)
    if length == 0:
        return ''
    else:
        l_str = s[0]
        
    mat = [[False for i in range(length)] for j in range(length)]
    
    # 处理边界条件
    for i in range(length):
        mat[i][i] = True        
    for i in range(length-1):
        mat[i][i+1] = s[i] == s[i+1]
        if mat[i][i+1] and len(l_str) == 1:
            l_str = s[i:i+2]
            
    # 注意循环的顺序,动态规划是从短片段到长片段,在遍历到长片段之前,保证所需要的短片段已被处理
    for j in range(2, length):
        for i in range(length-j):
            if mat[i+1][i+j-1] and s[i] == s[i+j]:
                mat[i][i+j] = True
                if j+1 > len(l_str):
                    l_str = s[i:i+j+1]
                        
    return l_str
posted @ 2021-05-27 11:00  youguang369  阅读(51)  评论(0)    收藏  举报