【问题标题】:How to find the longest chain of consecutively recurring character groupings in file如何在文件中找到最长的连续重复字符分组链
【发布时间】:2020-06-02 22:44:34
【问题描述】:

我是这个网站(和编程)的新手,但非常感谢我遇到的挑战的帮助。

我正在尝试编写一个程序来搜索提供的长 .txt 文件并查找特定字符组连续重复的实例,然后计算最高示例并将其与另一个文件进行比较(这是'现在不重要)。

所以对于具有以下长行的文件:

'dtcdtcdtcuiouiouiodtcdtcdtcdtcdtcuiouiioodtcdtc'

我想找到连续重复的“dtc”的最高实例。在行的开头,它这样做了三遍。然后在中间它这样做了四次。然后在最后它这样做了两次。所以我希望我存储的信息是 4。

但是,我正在努力实现这一点。正如我所说,我是新手,一直在努力寻找实现这一目标的最佳方法。到目前为止,我已经开始考虑以下选项:

read = textfile.read()
counter = 0

for i in range(len(read)):
        if (read[i:i + 2]) == 'dtc':
           counter += 1

但是,是的,我正在努力找出实现所需算法的最佳方法。如果您能指出我正确的方向,我将不胜感激。

非常感谢

【问题讨论】:

    标签: python python-3.x search substring


    【解决方案1】:

    我不确定它是否更有效,但您可以使用正则表达式:

    s = open('file.txt').read()
    found = re.findall(r'((dtc)+)', s, re.MULTILINE)
    found.sort(key=lambda x: x[0])
    biggest = found.pop()[0]
    

    否则,除了外观更优雅的版本之外,您无能为力。

    【讨论】:

    • 非常感谢您的帮助和建议。这对我开始玩非常有用。感谢您的宝贵时间:)
    【解决方案2】:

    这应该可行:

    read = "dtcdtcdtcuiouiouiodtcdtcdtcdtcdtcuiouioiodtcdtc"
    
    maxIter=len(read)
    maxCounter=0
    i=0
    counter = 0
    while (1):
        if i==maxIter: 
            break
        if(read[i:i+3]=="dtc"):
            counter+=1
            if counter>maxCounter:
                maxCounter=counter
            i+=3
        else:
            counter=0
            i+=1
    
    

    附言在您的示例字符串中,“dtc”在中间重复了 5 次

    【讨论】:

    • 非常感谢您花时间回答。这是我开始探索的一个非常有用的框架。感谢您的宝贵时间:)
    猜你喜欢
    • 1970-01-01
    • 2017-05-30
    • 2013-05-19
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多