一、穷举法
class Solution:
def longestPalindrome(self, s: str) -> str:
max_len = 0
s_len = len(s)
if(s_len <= 1):
return s
for i in range(s_len):
for j in range(i,s_len):
s_1 = s[i:j+1]
if(len(s_1) >= max_len and isPalindromic(s_1)):
rs = s_1
max_len = len(s_1)
return rs
def isPalindromic(s_1:str) -> bool:
s_2 = s_1[::-1]
if(s_1 == s_2):
return True
return False
二、动态规划
class Solution:
def longestPalindrome(self, s: str) -> str:
s_len = len(s)
if(s_len == 0 or s_len == 1):
return s
p = [[0] * s_len for i in range(s_len)]
max_len = 0
for i in range(1,s_len+1):
for start in range(s_len):
end = i + start - 1
if end >= s_len:
break
if(i==1):
p[start][end] = True
max_s = s[start:end+1]
continue
if(i==2 and s[start]==s[end]):
p[start][end] = True
max_s = s[start:end+1]
continue
p[start][end]=(p[start+1][end-1] and s[start]==s[end])
if(p[start][end] and i > max_len):
max_s = s[start:end+1]
return max_s
本文介绍了两种寻找字符串中最长回文子串的方法:穷举法和动态规划法。通过详细的代码实现,展示了如何判断一个字符串是否为回文,并找出最长的回文子串。
310

被折叠的 条评论
为什么被折叠?



