Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中找到最长的回文?_Python_Python 3.x - Fatal编程技术网

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

如何在python中找到最长的回文?,python,python-3.x,Python,Python 3.x,众所周知,回文是一个与其反面相等的词。这里有一些回文的例子:malayalam,gag,appa,amma 我们认为任何一个由英文字母组成的序列都是一个词。所以axxb、abbba和bbbccddx是我们的专用词。aaabbaa、abbba和bbb是回文的例子 我们所说的单词的子单词,是指单词的连续子序列。例如,单词abbba的子单词是a、b、ab、bb、ba、abb、bbb、bba、abbb、bbb、bbba和abbba 在这个任务中,你将得到一个单词,你必须找到这个单词中最长的子单词,它也是

众所周知,回文是一个与其反面相等的词。这里有一些回文的例子:
malayalam
gag
appa
amma

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

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

在这个任务中,你将得到一个单词,你必须找到这个单词中最长的子单词,它也是一个回文

例如,如果给定的单词是abbba,那么答案是abbba。如果给定的单词是abcbcabbabba,那么答案是bcabbacb

解决方案提示 当w反转时,w的任何回文子词也是子词

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

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

测试数据: 你可以假设1≤ N≤ 5000您可以进一步假设,在30%的输入中,1≤ N≤ 三百

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

Sample Input 1:
5
abbba
Sample Output 1:
5
abbba
Sample Input 2:
12
abcbcabbacba
Sample Output 2:
8
bcabbacb
我尝试了一个代码,但它不工作

请帮我写一些其他代码

这是我的代码,但它不工作

n = int(input())
ar = []
bestvals = [] 
best_stored = [] 
for x in range(n): 
    ar.append(int(input())) 
    best_stored.append(0) 
    best_stored[0] = 1 
    for i in range(n): 
        maxval = 1 
        for j in range(i): 
            if ar[i] % ar[j] == 0:
                maxval = max(maxval,(best_stored[j])+1) 
        best_stored[i] = maxval
print(max(best_stored))
这应该很好:

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))
def longestPalindrome():
n=int(输入())
s=输入()
temp=“”
对于范围内的i(len(s)):
对于范围内的j(透镜-1,i-1,-1):
如果s[i]==s[j]:
m=s[i:j+1]
如果m==m[:-1]:

如果len(temp)这是我的代码,但它不工作!n=int(输入())ar=[]最佳值=[]存储的最佳值=[]用于范围内的x(n):ar.append(输入())存储的最佳值。append(0)存储的最佳值[0]=1用于范围内的i(n):maxval=1用于范围内的j(i):如果ar[i]%ar[j]==0:maxval=max(maxval,(存储的最佳值[j])+1)存储的最佳值[i]=maxval打印(存储的最佳值)将您的代码添加到问题中。改为在问题中添加代码。此处不可读。将您的代码包含在问题中,并正确描述您遇到的问题。请部分查看此操作!查看此示例(示例输入1:5 abbba示例输出1:5 abbba示例输入2:12 abcbcabba示例输出2:8 bcabbacbb)输出必须是这样的。但是输出是另一种东西!@RoshiniManoharan它和我工作得很好。我确实输入了“abcbcabbabababba”作为输入,并得到了“bcabbacb”作为输出。
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()