输入一串字符串,求其最长的回文子串的长度 输入提示: "Please input string:\n" 输入格式: "%s" 输出格式: "%5d" 程序运行结果实例1: Please input string: ↙ babad 3 程序运行结果实例2: Please input string: ↙ cbbd 2
时间: 2024-03-26 18:40:19 浏览: 47
下面是使用动态规划的 Python 代码实现,可以求出给定字符串的最长回文子串长度:
```python
print("Please input string:")
s = input()
# dp[i][j] 表示 s[i:j+1] 是否为回文子串
dp = [[False] * len(s) for _ in range(len(s))]
# 初始化长度为 1 和 2 的回文子串
max_len = 1
for i in range(len(s)):
dp[i][i] = True
for i in range(len(s) - 1):
if s[i] == s[i + 1]:
dp[i][i + 1] = True
max_len = 2
# 枚举回文子串长度 k,从 3 开始
for k in range(3, len(s) + 1):
# 枚举左端点 i
for i in range(len(s) - k + 1):
# 计算右端点 j
j = i + k - 1
# 判断 s[i:j+1] 是否为回文子串
if s[i] == s[j] and dp[i + 1][j - 1]:
dp[i][j] = True
max_len = k
print("%5d" % max_len)
```
需要注意的是,这个算法的时间复杂度为 $O(n^2)$,其中 $n$ 是字符串的长度,空间复杂度也为 $O(n^2)$,可以通过进一步优化来降低空间复杂度。
阅读全文