共计 557 个字符,预计需要花费 2 分钟才能阅读完成。
问题描述:
给定一个字符串 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
时间与空间复杂度:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/probl…
正文完