gpt4 book ai didi

python - 使用 for 循环和 if 语句的最长重复子串

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:13 25 4
gpt4 key购买 nike

我正在上一门教授 Python 的入门级编程类(class)。有人向我介绍了一个项目的最长重复子串问题,但我似乎无法破解它。我在这里寻找解决方案,但我还没有学习后缀树,所以我无法使用它们。到目前为止,我已经到了这里:

msg = "kalhfdlakdhfklajdf" (anything)

for i in range(len(msg)):
if msg[i] == msg[i + 1]:
reps.append(msg[i])

它的作用是扫描我的字符串 msg,并检查计数器是否与序列中的下一个字符相匹配。如果字符匹配,它将 msg[i] 附加到列表“reps”。我的问题是:a) 我创建的函数总是比重复量少一个,并且b) 我的函数程序总是因为 msg[i+1] 在到达列表的最后一个位置时越界而崩溃。

本质上,我希望我的程序找到重复项,将它们附加到一个列表中,在该列表中计算最高的重复字符并返回给用户。

最佳答案

您需要使用 len(msg)-1 作为您的范围,但是您的条件会在您的条件中省略一个字符,并且为了获得它,您可以在代码中添加另一个条件来检查前面的字符也是:

根据你的条件,你将在 reps 中有 8 个 h,直到在 msg 中有 9 个:

>>> msg = "kalhfdlakdhhhhhhhhhfklajdf"
>>> reps = []
>>> for i in range(len(msg)-1):
... if msg[i] == msg[i + 1]:
... reps.append(msg[i])
...
>>> reps
['h', 'h', 'h', 'h', 'h', 'h', 'h', 'h']

还有另一个条件:

>>> reps=[]
>>> for i in range(len(msg)-1):
... if msg[i] == msg[i + 1] or msg[i] == msg[i - 1]:
... reps.append(msg[i])
...
>>> reps
['h', 'h', 'h', 'h', 'h', 'h', 'h', 'h', 'h']

关于python - 使用 for 循环和 if 语句的最长重复子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30986700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com