Python如果一个字符串正着读和反着读都一样,那它就是回文串。请写一个函数,参数为一个字符串,返回这个字符串所有子串里面构成回文串的最大子串。
时间: 2023-06-10 14:02:41 浏览: 1048
py代码-输入一个字符串,检查该字符串是否为回文(正着读和反着读都一样的字符串), 如果是就输出Yes,否则输出No。要求使用切片实现。
好的,我可以帮你解决这个问题。以下是 Python 代码:
```
def longest_palindrome(s):
n = len(s)
if n < 2:
return s
start, max_len = 0, 1
for i in range(n):
# check odd length palindromes
left, right = i - 1, i + 1
while left >= 0 and right < n and s[left] == s[right]:
if right - left + 1 > max_len:
start = left
max_len = right - left + 1
left -= 1
right += 1
# check even length palindromes
left, right = i, i + 1
while left >= 0 and right < n and s[left] == s[right]:
if right - left + 1 > max_len:
start = left
max_len = right - left + 1
left -= 1
right += 1
return s[start:start+max_len]
```
这个函数可以解决你的问题。它首先检查字符串的长度是否小于 2,如果小于 2,则直接返回原字符串。否则,从位置 0 开始遍历字符串,并检查以当前位置为中心的奇数长度回文串和偶数长度回文串。如果找到更长的回文子串,则更新开始位置和最大长度。最后,函数返回构成回文串的最大子串。
阅读全文