Текстовый файл состоит из заглавных букв латинского алфавита A, B, C, D, E и F.
Определите в прилагаемом файле максимальное количество идущих подряд символов, среди которых пара символов BC (в указанном порядке) встречается ровно 190 раз.
В ответе запишите число – количество символов в найденной последовательности.
Для выполнения этого задания следует написать программу.
Решение
🔹 Шаг 1. Читаем файл в строку и задаём переменные для скользящего окна
s = open("24_29354.txt").read()
l = 0
bc = 0
max_len = 0
📌 Читаем файл в строку и задаём переменные для скользящего окна: левая граница, счётчик пар «BC» и переменная для ответа.
🔹 Шаг 2. Обходим строку слева направо
for r in range(len(s) - 1):
if s[r] == 'B' and s[r + 1] == 'C':
bc += 1
📌 Обходим строку слева направо: на каждом шаге учитываем новую пару «BC», если она появилась на текущей позиции.
🔹 Шаг 3. Сдвигаем левую границу, пока в окне больше 190 пар «BC»
while bc > 190:
if s[l] == 'B' and s[l + 1] == 'C':
bc -= 1
l += 1
📌 Сдвигаем левую границу, пока в окне больше 190 пар «BC»: при выходе символов уменьшаем счётчик.
🔹 Шаг 4. Если в окне ровно 190 пар «BC», обновляем максимальную длину…
if bc == 190:
max_len = max(max_len, r + 2 - l)
📌 Если в окне ровно 190 пар «BC», обновляем максимальную длину подходящего фрагмента.
🔹 Шаг 5. Жми RUN
print(max_len)
📌 Жми RUN — в выводе будет максимальная длина последовательности (2287).
✅ Ответ: 2287
🔹 Полный код
s = open("24_29354.txt").read()
l = 0
bc = 0
max_len = 0
for r in range(len(s) - 1):
if s[r] == 'B' and s[r + 1] == 'C':
bc += 1
while bc > 190:
if s[l] == 'B' and s[l + 1] == 'C':
bc -= 1
l += 1
if bc == 190:
max_len = max(max_len, r + 2 - l)
print(max_len)