Текстовый файл состоит не более чем из \(10^6\) символов и содержит только заглавные буквы латинского алфавита. Определите максимальное количество идущих подряд символов, среди которых каждая из гласных букв \((A, \, E, \, I, \, O, \, U, \, Y)\) встречается не более восьми раз, а буквы \(V, \, X\) и \(Z\) не встречаются совсем.
Решение:
Python. Два указателя
s = open('7193.txt').readline().strip()
symb = 'AEIOUY'
p_char = {c: [] for c in symb}
count_char = {c: 0 for c in symb}
deny = 'VXZ'
ml = 0
p_begin = 0
for p in range(len(s)):
if s[p] in symb:
p_char[s[p]].append(p)
count_char[s[p]] += 1
if any(count_char[c] > 8 for c in symb) or s[p] in deny:
ml = max(ml, p - p_begin)
stmp = [c for c in symb if c != s[p]]
if s[p] not in deny:
p_begin = p_char[s[p]].pop(0) + 1
count_char[s[p]] -= 1
else:
p_begin = p + 1
for c in stmp:
p_char[c] = [t for t in p_char[c] if t >= p_begin]
count_char[c] = len(p_char[c])
ml = max(ml, len(s) - p_begin)
print(ml)
Ответ: \(89\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене