从find_all_palindromes函数中生成最长回文函数

问题描述 投票:0回答:1

我想制作一个可以打印大量文本的最长回文子字符串的函数。我已经编写了用于查找文本所有回文的代码。现在,我想让它只打印最长的一个。但这行不通。有人可以帮忙吗?

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中工作

python python-3.7 palindrome
1个回答
0
投票

我自由地将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")
© www.soinside.com 2019 - 2024. All rights reserved.