(Н. Егорова) Текстовый файл содержит строку из заглавных латинских букв \(A, \, B\) и \(C,\) всего не более чем из \(10^6\) символов. Определите количество подстрок длиной не менее трех символов, которые не содержали бы одновременно все три буквы \(A, \, B\) и \(C.\) Примечание: подстрока — это непрерывный фрагмент исходной строки.
Решение:
Python
s = open('5152.txt').readline().strip()
d = {'A': 0, 'B': 0, 'C': 0}
for i in range(3):
d[s[i]] += 1
i = 3
while all(v != 0 for v in d.values()):
d[s[i]] += 1
d[s[i-3]] -= 1
i += 1
q = 1
p0 = i - 3
for p in range(i, len(s)):
d[s[p]] += 1
while all(v > 0 for v in d.values()):
d[s[p0]] -= 1
p0 += 1
q += sum(v for v in d.values()) - 2
print(q)
Ответ: \(252776\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене