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