5. 最长回文子串 python
时间: 2024-10-02 10:01:34 浏览: 28
最长回文子串是指一个字符串中最长的能够从前往后读和从后往前读都相同的部分。在Python中,可以使用动态规划算法来解决这个问题。一个常见的思路是使用两个指针分别从字符串的开始和结束向中间移动,同时记录下最长回文子串的长度和实际内容。
以下是使用中心扩散法的一个简单实现:
```python
def longest_palindrome(s):
if not s:
return ""
max_len = 1
start = 0
for i in range(len(s)):
# 检查以i为中心的奇数长度回文
l, r = i, i
while l >= 0 and r < len(s) and s[l] == s[r]:
if r - l + 1 > max_len:
max_len = r - l + 1
start = l
l -= 1
r += 1
# 检查以i,i+1为中心的偶数长度回文
l, r = i, i + 1
while l >= 0 and r < len(s) and s[l] == s[r]:
if r - l + 1 > max_len:
max_len = r - l + 1
start = l
l -= 1
r += 1
return s[start:start + max_len]
# 示例
s = "babad"
print(longest_palindrome(s)) # 输出:"bab"
```
阅读全文