[英]How to find the longest palindrome in python?
众所周知,回文是一个等于它的反向的词。 以下是回文的一些示例: malayalam
、 gag
、 appa
、 amma
。
我们认为任何由英文字母组成的序列都是一个词。 所以 axxb、abbba 和 bbbccddx 是我们的目的词。 aaabbaaa、abbba 和 bbb 是回文的例子。
词的子词是指词的连续子序列。 例如单词abbba的子词是a、b、ab、bb、ba、abb、bbb、bba、abbb、bbba和abbba。
在此任务中,您将给出一个单词,并且您必须找到该单词中最长的也是回文的子单词。
例如,如果给定的单词是 abbba,那么答案就是 abbba。 如果给定的单词是 abcbcabbacba,那么答案是 bcabbacb。
解决方案提示 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
我尝试了一个代码,但它不起作用!!
请帮我一些其他的代码!
这是我的代码,但它不起作用!
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))
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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.