最长回文子串python
时间: 2024-01-16 11:19:01 浏览: 116
python 实现最长回文子串
以下是一个求解最长回文子串的Python代码示例:
```python
def longest_palindrome(s):
n = len(s)
if n < 2:
return s
start, max_len = 0, 1
def expand(left, right):
while left >= 0 and right < n and s[left] == s[right]:
left -= 1
right += 1
return right - left - 1
for i in range(n):
len1 = expand(i, i)
len2 = expand(i, i + 1)
cur_len = max(len1, len2)
if cur_len > max_len:
max_len = cur_len
start = i - (cur_len - 1) // 2
return s[start:start + max_len]
# 示例用法
s = "babad"
result = longest_palindrome(s)
print(result) # 输出:"bab"
```
这段代码使用了中心扩展法来寻找最长回文子串。首先,我们定义了一个辅助函数`expand`,用于从给定的中心向两边扩展,找到以该中心为起点的最长回文子串的长度。然后,我们遍历字符串`s`的每个字符,以该字符为中心,分别计算奇数长度和偶数长度的回文子串的长度,并更新最长回文子串的起始位置和长度。最后,返回最长回文子串。
阅读全文