Задание №24: Обработка символьных строк
Основные типы и прототипы задания №24:
Цепочки символов фиксированного типа
Замена запрещённых пар
Чередующиеся гласные и согласные
Условие задания
(К. Багдасарян) Текстовый файл 24-301.txt состоит не более чем из 106 символов и содержит только десятичные цифры, знаки арифметических операций и круглые скобки: «(», «)». Назовем выражение корректным, если:
1) оно начинается с открывающей скобки «(» и заканчивается парной ей закрывающей скобкой «)»;
2) скобки внутри выражения сбалансированы, т.е.:
- для каждой открывающей скобки есть закрывающая;
- скобки открываются и закрываются в правильном порядке.
Примеры корректных выражений: ((1+2)(3+++4)), ((1***2)345)
Примеры некорректных выражений:
(1+2)) – (лишняя закрывающая скобка);
)1+2) – (скобки неправильно расположены);
(1+2)(3+4) – всё выражение не охвачено скобками.
Определите максимальное количество символов в непрерывной последовательности текста, которая представляет собой корректное выражение. Гарантируется, что в тексте присутствуют корректные выражения. В ответе укажите количество символов.
1) оно начинается с открывающей скобки «(» и заканчивается парной ей закрывающей скобкой «)»;
2) скобки внутри выражения сбалансированы, т.е.:
- для каждой открывающей скобки есть закрывающая;
- скобки открываются и закрываются в правильном порядке.
Примеры корректных выражений: ((1+2)(3+++4)), ((1***2)345)
Примеры некорректных выражений:
(1+2)) – (лишняя закрывающая скобка);
)1+2) – (скобки неправильно расположены);
(1+2)(3+4) – всё выражение не охвачено скобками.
Определите максимальное количество символов в непрерывной последовательности текста, которая представляет собой корректное выражение. Гарантируется, что в тексте присутствуют корректные выражения. В ответе укажите количество символов.
Ответ:
65
Шаблон решения на 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))