jpp*_*jpp 16
order of repetition does not matter您可以按总字母数减去唯一字母的数量.set应用于字符串将返回唯一的字母集合.
x = "loooooveee"
res = len(x) - len(set(x)) # 6
Run Code Online (Sandbox Code Playgroud)
或者您可以使用collections.Counter,从每个值中减去1,然后sum:
from collections import Counter
c = Counter("loooooveee")
res = sum(i-1 for i in c.values()) # 6
Run Code Online (Sandbox Code Playgroud)
repetitions must be sequential您可以使用itertools.groupby对顺序相同的字符进行分组:
from itertools import groupby
g = groupby("aooooaooaoo")
res = sum(sum(1 for _ in j) - 1 for i, j in g) # 5
Run Code Online (Sandbox Code Playgroud)
要避免嵌套sum调用,您可以使用itertools.islice:
from itertools import groupby, islice
g = groupby("aooooaooaoo")
res = sum(1 for _, j in g for _ in islice(j, 1, None)) # 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
559 次 |
| 最近记录: |