Ctrl K

Скобки в два цвета

Средняя
Дана правильная скобочная последовательность brackets из символов ( и ). Глубина последовательности — наибольшее число пар скобок, вложенных друг в друга: у ()() она равна 1, у (()(())) — 3, у пустой строки — 0. Каждую пару скобок нужно отнести к одной из двух групп, 0 или 1 (обе скобки пары — в одну группу). Скобки каждой группы, выписанные в исходном порядке, тоже образуют правильную последовательность. Цель — чтобы бóльшая из глубин двух групп была как можно меньше. Таких разбиений обычно несколько, поэтому требуется одно конкретное: пары верхнего уровня (не вложенные ни в какую другую) идут в группу 0, а каждая пара, лежащая непосредственно внутри другой пары, попадает в группу, противоположную группе этой внешней пары. Такое разбиение всегда оптимально. Верните список длины len(brackets), где i-й элемент — номер группы скобки brackets[i].
Пример 1
brackets="((()))" → [0, 1, 0, 0, 1, 0]

Внешняя пара — в группу 0, средняя — в 1, внутренняя — снова в 0. Группа 0 — это (()) глубины 2, группа 1 — () глубины 1. Сложить всё в одну группу дало бы глубину 3.

Пример 2
brackets="()(())" → [0, 0, 0, 1, 1, 0]

Обе пары верхнего уровня — в группу 0, вложенная во вторую — в группу 1. Обе группы имеют глубину 1.

Пример 3
brackets="()" → [0, 0]
Ограничения
  • 1 ≤ len(brackets) ≤ 10⁴
  • brackets — правильная скобочная последовательность из ( и )
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПричесать путь к папке СредняяКалькулятор на четыре действия СредняяКаждая буква по разу СредняяЗапись дерева с решётками СредняяДлина самого длинного пути к файлу Средняя
загружаем Python…
Вход
brackets="((()))"
Ожидается
[0, 1, 0, 0, 1, 0]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 146 тестов на сервере, включая скрытые.