Задание №24: Обработка символьных строк
Основные типы и прототипы задания №24:
Цепочки символов фиксированного типа
Замена запрещённых пар
Чередующиеся гласные и согласные
Условие задания
(К. Багдасарян) Текстовый файл 24-303.txt состоит не более чем из 106 символов и содержит только десятичные цифры, знаки арифметических операций, а также круглые, квадратные и фигурные скобки: «(», «)», «[», «]», «{», «}». Назовем выражение корректным, если:
1) оно начинается с открывающей скобки и заканчивается парной ей закрывающей скобкой того же типа;
2) скобки внутри выражения сбалансированы, т.е.:
- для каждой открывающей скобки есть закрывающая того же типа;
- скобки открываются и закрываются в правильном порядке.
Примеры корректных выражений: [{1+2}(3+++4)], [(1***2){3}45]
Примеры некорректных выражений:
(1+2]) – (лишняя закрывающая скобка ]);
(1+2] – (открывающая и закрывающая скобки не соответствуют друг другу).
Определите максимальное количество символов в непрерывной последовательности текста, которая представляет собой корректное выражение. Гарантируется, что в тексте присутствуют корректные выражения. В ответе укажите количество символов.
1) оно начинается с открывающей скобки и заканчивается парной ей закрывающей скобкой того же типа;
2) скобки внутри выражения сбалансированы, т.е.:
- для каждой открывающей скобки есть закрывающая того же типа;
- скобки открываются и закрываются в правильном порядке.
Примеры корректных выражений: [{1+2}(3+++4)], [(1***2){3}45]
Примеры некорректных выражений:
(1+2]) – (лишняя закрывающая скобка ]);
(1+2] – (открывающая и закрывающая скобки не соответствуют друг другу).
Определите максимальное количество символов в непрерывной последовательности текста, которая представляет собой корректное выражение. Гарантируется, что в тексте присутствуют корректные выражения. В ответе укажите количество символов.
Ответ:
59
Шаблон решения на Python
# === Задание 24: Обработка символьных строк ===
with open('24.txt') as f:
s = f.read().strip()
# Пример: замена запрещённых комбинаций разделителем
s = s.replace('XX', 'X X')
segments = s.split(' ')
print("Максимальная длина подходящего фрагмента:", max(len(sub) for sub in segments))