用Python写一个查找字符串中最长回文串的代码
时间: 2023-09-05 12:04:44 浏览: 96
### 回答1:
def find_longest_palindrome(s):
n = len(s)
max_length = 1
start = 0
low = 0
high = 0
# 从第二个字符开始
for i in range(1, n):
# 偶数回文
low = i - 1
high = i
while low >= 0 and high < n and s[low] == s[high]:
if high - low + 1 > max_length:
start = low
max_length = high - low + 1
low -= 1
high += 1
# 奇数回文
low = i - 1
high = i + 1
while low >= 0 and high < n and s[low] == s[high]:
if high - low + 1 > max_length:
start = low
max_length = high - low + 1
low -= 1
high += 1
return s[start:start + max_length]
print(find_longest_palindrome(s))
### 回答2:
以下是一个用Python编写的查找字符串中最长回文串的代码:
```python
def longest_palindrome(s):
start = 0
end = 0
for i in range(len(s)):
len1 = expand_around_center(s, i, i) # 奇数长度的回文串
len2 = expand_around_center(s, i, i+1) # 偶数长度的回文串
max_len = max(len1, len2)
if max_len > end - start:
start = i - (max_len - 1) // 2
end = i + max_len // 2
return s[start:end+1]
def expand_around_center(s, left, right):
while left >= 0 and right < len(s) and s[left] == s[right]:
left -= 1
right += 1
return right - left - 1
if __name__ == "__main__":
string = input("请输入字符串:")
result = longest_palindrome(string)
print("最长回文串为:", result)
```
该代码首先定义了一个`longest_palindrome`函数和一个`expand_around_center`函数。
`expand_around_center`函数用于从给定的中心位置向两侧扩展,判断字符串中的回文串长度。
`longest_palindrome`函数通过遍历字符串中的每个字符,分别以该字符为中心,向两侧扩展来找出最长的回文串。
最后,在主函数部分,用户输入一个字符串,然后调用`longest_palindrome`函数来查找并打印出最长回文串。
### 回答3:
下面是一个用Python编写的查找字符串中最长回文串的代码:
```python
def longest_palindrome(string):
longest = ''
for i in range(len(string)):
# 以当前字符为中心的奇数长度回文串
palindrome = expand_around_center(string, i, i)
if len(palindrome) > len(longest):
longest = palindrome
# 以当前字符和下一个字符之间为中心的偶数长度回文串
palindrome = expand_around_center(string, i, i + 1)
if len(palindrome) > len(longest):
longest = palindrome
return longest
def expand_around_center(string, left, right):
while left >= 0 and right < len(string) and string[left] == string[right]:
left -= 1
right += 1
return string[left + 1:right]
# 测试代码
string = 'babad'
result = longest_palindrome(string)
print(result)
```
这个代码使用了中心扩展算法来查找回文串。对于每个字符,它分别以该字符为中心(奇数长度回文串)和以该字符和下一个字符之间为中心(偶数长度回文串)进行扩展,并记录下最长的回文串。最后返回最长的回文串。
在测试代码中,我们以字符串'babad'为例进行测试,并输出结果。
阅读全文