如何在python中找到最长的回文?

2024-09-27 23:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

众所周知,回文是一个与其相反的词。这里有一些回文的例子:malayalamgagappaamma。在

我们认为任何由英文字母组成的序列都是一个单词。所以axxb,abbba和bbbccddx就是我们的目的。aaabbaa,abbba和bbb是回文的例子。在

我们所说的词的子词,是指该词的一个连续的子序列。例如,单词abbba的子词是a,b,ab,bb,ba,abb,bbb,bba,abb,bbba和abbba。在

在这个任务中,你将给出一个词,你必须找到这个词的最长的子词也是一个回文。在

例如,如果给定的单词是abbba,那么答案是abbba。如果给定的单词是abcbcabbacba,那么答案是bcabacb。在

解决方案提示 当w颠倒时,任何作为回文的w的子词也是一个子词。在

输入格式 输入的第一行包含一个表示单词长度的整数N。下一行包含一个长度为N的单词,由字母a、b、…、z组成

输出格式 输出的第一行必须包含一个整数,该整数指示给定单词的最长子字(即回文)的长度。第二行必须包含一个子词,该子词是回文且长度最大。如果有一个以上的最大长度的子词回文,则打印词典编纂最小的子词(即,按字典顺序最小的子词)。在

试验数据: 你可以假设1≤N≤5000。您可以进一步假设在30%的输入中1≤N≤300。在

示例: 我们使用上述示例说明输入和输出格式:

Sample Input 1:
5
abbba
Sample Output 1:
5
abbba
Sample Input 2:
12
abcbcabbacba
Sample Output 2:
8
bcabbacb

我尝试了一个代码,但它不起作用!!在

请帮我用其他代码!在

这是我的代码,但它不起作用!在

^{pr2}$

Tags: sample答案代码示例input格式序列整数
2条回答
def longestPalindrome():
    n = int(input())
    s = input()
    temp = ""
    for i in range(len(s)):
        for j in range(len(s)-1,i-1,-1):
            if s[i] == s[j]:
                m = s[i:j+1]
                if m == m[::-1]:
                    if len(temp) <= len(m):
                        temp = m
    print(len(temp))
    print(temp)

longestPalindrome()   

这应该可以很好地工作:

word = input('enter your word: ')
subwords = []
for i in range(len(word)):
    for j in range(len(word)+1):
        subwords.append(word[i:j])

palindromes = []
for subword in subwords:
    if subword == subword[::-1]:
        palindromes.append(subword)


print(len(max(palindromes, key=len)))
print(max(palindromes, key=len))

相关问题 更多 >

    热门问题