给你一个字符串s,找到s中最长的回文子串。请在编码结束后把结果打印出来。
时间: 2024-12-25 10:29:20 浏览: 2
为了在一个字符串`s`中找到最长的回文子串,可以使用动态规划算法。以下是Python的一个常见实现:
```python
def longest_palindrome(s):
if not s:
return ""
n = len(s)
# 创建一个二维布尔数组,dp[i][j]表示从i到j的子串是否为回文
dp = [[False] * n for _ in range(n)]
max_length = 0
start = 0
# 单字符都是回文
for i in range(n):
dp[i][i] = True
# 遍历子串长度,从1到n-1
for length in range(2, n + 1):
for i in range(n - length + 1):
j = i + length - 1
# 如果子串首尾字符相等,并且内部子串也是回文,那么该子串就是回文
if s[i] == s[j] and (length == 2 or dp[i+1][j-1]):
dp[i][j] = True
if length > max_length:
max_length = length
start = i
# 打印最长回文子串
return s[start:start + max_length]
# 使用示例
input_string = "babad"
result = longest_palindrome(input_string)
print("最长回文子串:", result)
```
这段代码首先初始化一个二维数组`dp`用于记录子串是否为回文,然后遍历所有可能的子串长度和起始位置,判断当前子串是否满足回文条件。如果找到更长的回文,就更新`max_length`和`start`。最后返回最长的回文子串。
阅读全文