others - 在 python 字符串中,计算连续重复字母的实例

字符串来自raw_input()

例如,如果输入为:

abceeedtyooo 

输出应为:2

这是我当前的代码:


print 'Enter String:'
x = str(raw_input (""))

print x.count(x[0]*3)

时间:

要计算字符串中的字符数,可以使用collections.Counter


>>> from collections import Counter
>>> counter = Counter("abceeedtyooo")
>>> print(counter)
Counter({'e': 3, 'o': 3, 'a': 1, 'd': 1, 'y': 1, 'c': 1, 'b': 1, 't': 1})

然后,你可以按以下的方式过滤结果:


>>> result = [char for char in counter if counter[char] == 3]
>>> print(result)
['e', 'o']

如果只想匹配连续字符,则可以使用正规表达式(cf ,re ):


>>> import re
>>> result = re.findall(r"(.)11","abceeedtyooo")
>>> print(result)
['e', 'o']
>>> result = re.findall(r"(.)11","abcaaa")
>>> print(result)
['a']

如果同一字符连续出现三次(例如,多次出现),也将匹配,在"aaabcaaa"上,它将匹配'a'两次),匹配是不重叠的,所以在"aaaa"上它只能匹配一次,但是在"aaaaaa"上,它将匹配两次,如果不希望连续字符串上有多个匹配项,请将正规表达式修改为r"(.)11(?1)",! 为了避免匹配出现超过3个字符的字符,使用(.)(?<(?=1)..)1{2}(?1),! 这解决了python模块正规表达式不能处理(?

计算恰好出现3次的连续重复字母的数量:


>>> from itertools import groupby
>>> sum(len(list(dups)) == 3 for _, dups in groupby("abceeedtyooo"))
2

...