python - Python 中的连续重复

标签 python

我是编程新手,所以不要对我残酷:)我正在努力解决字符串中连续重复次数最多的问题。我得到了一个子字符串,例如“ABC”,然后我有一个包含字母 ex 序列的文件。 “ABC ABC BBC CDA ABC ABC ABC DBA”(这里不包括空格,只是为了更好看)。这里输出应该是3,这是一次又一次重复的最高次数。

我正在考虑使用 str.count(sub[, start[, end]]方法,但我不知道如何使用它以获得有效的输出。我一直在尝试创建子字符串 s = string[i][j] ,然后使用 s2 ,即 string[i+len(substring):j+len(substring)]但好像案例太多所以我放弃了。使用下面的代码我得到了有效的输出,但仅在少数情况下有效。我希望你能帮助我。谢谢!

substr_count = 0
string = "ABCABCBBCCDAABCABCDBA"
while True:
    start = 0
    substring = "ABC"

    loc = string.find(substring,start)
    if loc == -1:
        break
    substr_count += 1
    start = loc + len(substring)

最佳答案

正如 usr2564301 所说,itertools.groupby 将是正确的选择。 这是一种愚蠢的、有点暴力的方法:

def max_repititions(string, substring):
    if not substring:
        return 0
    for count in range(len(string), 0, -1):
        if substring*count in string:
            return count
    return 0

string = "ABCABCBBCCDAABCABCDBA"
substring = "ABC"

print(max_repititions(string, substring))

关于python - Python 中的连续重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60675554/

相关文章:

python - dict.get 返回空而不是默认值

python - 从 Amazon S3 上的子文件夹获取上次修改的文件路径。 Python

python - Python 请求中的 SSL 和 TLS

python - 无法在 opencv (python) 中写入有效的二进制阈值图像

python - 比较python中的列表元素

python - 使用坐标列表进行索引的更多 Pythonic 方法

python - 赋值前引用的 Pygame 局部变量

python - 如何将菜单栏添加到 QWidget?

python - Python 中的嵌套函数作用域

python - 如何重新映射 python dict 键