python - 如何在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()
推荐阅读
- java - Jar 文件从替换变量中转义“--” - Bash
- kubernetes - Kubernetes 中的 CouchbaseCluster 资源在几天后消失
- haskell - Haskell中对map参数的误解
- select - 如何在 Grails 4 上使用“选项组”创建下拉菜单?
- ios - iOS 14 TextInput 跳转和点击自动滚动(React Native) - 如何禁用?
- python - 如何在 Python Notebook 上反转 y 轴值?情节
- c++ - 将 C 和 C++ 与外部函数混合使用
- spring - 长值的弹簧启动验证
- vhdl - VHDL 2008 宽度不匹配
- android - 如何使用自定义背景颜色动态设置圆形图像视图