最长回文子串

Posted tsdblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长回文子串相关的知识,希望对你有一定的参考价值。

问题描述:
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

 

解题思路: 

技术图片

 

代码如下:

class Solution:
    def longestPalindrome(self, s: str) -> str:
        if s == None:
            return None
        length = len(s)
        if length <= 1:
            return s
        dp = [[0 for i in range(length)] for i in range(length)]
        ss = s[0]
        re = 1
        for i in range(0,length):
            for j in range(0,i+1):
                if i-j<=1:
                    if s[j]==s[i]:
                        dp[j][i]=1
                        if re < i-j+1:
                            ss = s[j:i+1]
                            re = i-j+1
                else:
                    if s[j]==s[i] and dp[j+1][i-1]:
                        dp[j][i]=1
                        if re < i-j+1:
                            ss = s[j:i+1]
                            re = i-j+1
        return ss

 

以上是关于最长回文子串的主要内容,如果未能解决你的问题,请参考以下文章

华为机试题 HJ85最长回文子串

最长回文字串暴力

Leetcode 5. 最长回文子串

找到最长的回文子串

最长回文子串(python)

字符串最长回文子串 ( 动态规划算法 ) ★