Текстовый файл состоит не более чем из \(10^6\) символов и содержит только заглавные буквы латинского алфавита. Определите максимальное количество идущих подряд символов, среди которых буквы \(X\) и \(Y\) встречаются ровно по одному разу, а буква \(A\) не встречается совсем.
Решение:
Python. Два указателя
s = open('7193.txt').readline().strip()
p_char = {'X': [], 'Y': []}
count_char = {'X': 0, 'Y': 0}
deny = 'A'
ml = 0
p_begin = 0
for p in range(len(s)):
if s[p] in 'XY':
p_char[s[p]].append(p)
count_char[s[p]] += 1
if any(count_char[c] > 1 for c in 'XY') or s[p] in deny:
stmp = [c for c in 'XY' if c != s[p]]
if all(count_char[c] == 1 for c in stmp):
ml = max(ml, p - p_begin)
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)
Ответ: \(135\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене