5. 最长回文子串
提示
给你一个字符串 s,找到 s 中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
一、动态规划
def huiwen(s):
n = len(s)
dp = [[False] * n for _ in range(n)]
start, max_len = 0, 1
# 边界
if n < 2:
return s
# 初始化
for i in range(n):
dp[i][i] = True
# 枚举区间终点
for j in range(1, n):
# 枚举起点
for i in range(0, j):
if s[i] == s[j]:
if j - i < 3:
dp[i][j] = True
else:
dp[i][j] = dp[i + 1][j - 1]
if dp[i][j]:
l = j - i + 1
if l > max_len:
max_len = l
start = i
print(s[start: start + max_len])
if __name__=='__main__':
s=input("s=").split()
huiwen(s)