如何在python中找到一行中重叠子字符串的最大数量?

2024-07-08 17:20:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下字符串

a = "AAWJBDJSDJBJSQQAAASDNDKSDKJSDKSJDDJKJSKJAAAAASKJDSJDKJSDKJDAAAAAAAA" 我要做的第一件事是数一数队伍中的A:

a.count("A")这个很好用。你知道吗

接下来我要做的是找到最长重叠“A”的值。在这种情况下,它将是AAAAA(8倍)。 所以我希望我的输出是: The Longest polyA is 8

有人知道我怎么做吗?你知道吗


Tags: the字符串longestiscount情况aaaaapolya
3条回答

在字符串中循环,跟踪最长的行程:

a = "AAWJBDJSDJBJSQQAAASDNDKSDKJSDKSJDDJKJSKJAAAAASKJDSJDKJSDKJDAAAAAAAA"
longest = 0
cnt = 0
for c in a:
    if c == 'A':
        cnt += 1
    else:
        longest = max(longest, cnt)
        cnt = 0

longest = max(longest, cnt)
print(longest)    

我可以想出两种方法。你知道吗

第一种方法使用regex,易于编写。对你的案子来说已经足够了。你知道吗

import re

string = "AAWJBDJSDJBJSQQAAASDNDKSDKJSDKSJDDJKJSKJAAAAASKJDSJDKJSDKJDAAAAAAAA"

print(len(max(re.findall('A+', string)))) # abusing the fact that longer strings are "larger"

第二种方法使用模式匹配,比较复杂。查看this library获取灵感。你知道吗

最好的方法是使用正则表达式:

import re

string = "AAWJBDJSDJBJSQQAAASDNDKSDKJSDKSJDDJKJSKJAAAAASKJDSJDKJSDKJDAAAAAAAA"

print(len(max(re.findall('A+', string),key=len)))

相关问题 更多 >

    热门问题