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