我想制作一个可以打印大量文本的最长回文子字符串的函数。我已经编写了用于查找文本所有回文的代码。现在,我想让它只打印最长的一个。但这行不通。有人可以帮忙吗?
def find_palindrome_substr(string, left, right):
while left >= 0 and right <len(string):
if string[left] != string[right]:
break
print string[left: right+1]
left -=1 #expand to left
right +=1 #expand to right
def find_all_palin(string):
for i in xrange(0, len(string)):
find_palindrome_substr(string, i-1, i+1)
find_palindrome_substr(string, i, i+1)
find_all_palin("aabbbaa")
如何制作此代码,使其仅打印最长的回文子串?我在python 3.7中工作
我自由地将print
更改为print()
,将xrange
更改为range
,使其可以在python 3上运行。
您可以使用的一种解决方案是将所有回文附加到列表palindromes.append("word")
中,然后用list comprehension计算它们的长度,然后使用max()
函数从列表中打印出一个,以找到最大值。
palindromes = []
def find_palindrome_substr(string, left, right):
while left >= 0 and right <len(string):
if string[left] != string[right]:
break
palindromes.append(string[left: right+1])
left -=1 #expand to left
right +=1 #expand to right
def find_all_palin(string):
for i in range(0, len(string)):
find_palindrome_substr(string, i-1, i+1)
find_palindrome_substr(string, i, i+1)
len_palindromes = [(len(palindrome), palindrome) for palindrome in palindromes]
print(max(len_palindromes)[1])
find_all_palin("aabbbaa")