我有一个包含信件的文件。我需要找出最长重复字母的位置。例如,如果文件包含aaassdddffccsdddfgssfrsfspppppppppppddsfs,我需要一个程序来查找ppppppppppp的位置。我知道我需要使用一个.index函数来查找位置,但是我被困在循环中。

最佳答案

使用itertools.groupby

import itertools

mystr = 'aaassdddffccsdddfgssfrsfspppppppppppddsfs'

idx = 0
maxidx, maxlen = 0, 0
for _, group in itertools.groupby(mystr):
    grouplen = sum(1 for _ in group)
    if grouplen > maxlen:
        maxidx, maxlen = idx, grouplen
    idx += grouplen

给出idx和最长相同子串的长度:
>>> print(maxidx, maxlen)
25, 11

>>> mystr[25:25+11]
'ppppppppppp'

10-06 10:48