输入一个字符串,请找出该字符串的包含的最长回文子字符串
比如,输入babcd,输出bab
输入abbc,输出bb
动态规划方法--改进暴力全子串判断
状态方程:
表示字符串s[i:j+1] 出是否为回文子串的判断,T or F
转态转移方程
又考虑到,长度为2时的回文子串超了范围,所以限定 j-2 > i
最终状态转移方程为:![]()
s = input()
n = len(s)
if n <= 1:
print(s)
else:
p = [[False for _ in range(n)] for _ in range(n)]
maxlen = 1
maxsstr = s[0]
for r in range(1,n):
for l in range(r):
if s[l] == s[r] and (r-l<=2 or p[l+1][r-1]):
p[l][r] = True
length = r - l +1
if length > maxlen:
maxlen = length
maxsstr = s[l:r+1]
print(maxsstr)