python - 需要找到特定长度的所有回文

标签 python palindrome

给定一个字符串,我需要找到该序列中特定长度的所有回文的索引,然后将该索引打印在回文长度旁边。

例如,如果我想要 4 个字符长的回文:

seq = 'abbacdefggfhijkkjlmn' 

最佳读数是:

[(0,4), (7,4), (13,4)]

我已经编写了一个执行此操作的函数,但是其中有一个小故障。它返回正确的数据集,但它会一遍又一遍地返回,次数与序列长度相同。例如,给定上面的序列,它将返回数据集 20 次:

def find_palindromes(seq,y):
L = len(seq)
res = []
for x in seq:
    x=0
    while x<= L-y:
        if seq[x:x+y] == reverse(seq[x:x+y]):
            res.append((x,y))
        x=x+1
return res

任何有关我的故障的见解将不胜感激。我知道这可能不是最有效的做事方式,但我是个新手,只是想尝试一下。

最佳答案

您的 for 循环每次都从 0 开始,因此您实际上可以执行与 seq 中的字符一样多的次数。 while 循环本身就足够了——您所需要做的就是迭代序列一次。因此(正如 2rs2ts 的评论所说)只需删除 for x in seq 行即可。

这是一个非常简单的修复方法:稍微更彻底的方法是将 while 循环切换为 for x in range(0, L-y): 循环。

另外:代码中除函数头之外的所有内容都应该缩进,以便 Python 知道它位于函数内部。

关于python - 需要找到特定长度的所有回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17735398/

相关文章:

python - 在 Python 中装饰生成器 : call some method in between yields

java - 双链表实现回文检查器

python - 输入是否为回文

python - 如何消除 PyInstaller 单文件夹构建中的困惑?

python - Pandas 系列的小时值到系列的日期

python - Python 中的字符串切片/子字符串/范围

Java回文程序无法运行

Python:鼠标交互获取数据点对应信息

c++ getline函数不允许我输入

C - 程序只检查文件中的第一个单词