Оригинальный вопрос: order of repetition does not matter
Вы можете вычесть количество уникальных букв из общего количества букв. set
применительно к строке вернет уникальную коллекцию букв.
x = "loooooveee"
res = len(x) - len(set(x)) # 6
Или вы можете использовать collections.Counter
, вычесть 1 из каждого значения, затем sum
:
from collections import Counter
c = Counter("loooooveee")
res = sum(i-1 for i in c.values()) # 6
Новый вопрос: 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
Чтобы избежать вложенных вызовов 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