Ctrl K

Скобки с закреплёнными местами

Средняя
Дана строка brackets из символов ( и ) и строка pinned той же длины из 0 и 1. Если pinned[i] равно 1, символ brackets[i] закреплён и менять его нельзя. Если 0 — на этом месте можно поставить любую из двух скобок. Правильная скобочная последовательность — непустая строка, в которой скобки можно разбить на пары: каждая ( закрывается своей ) правее, и пары не перекрещиваются (например, (), (()), ()()). Верните True, если, меняя только незакреплённые символы, можно сделать brackets правильной скобочной последовательностью, и False иначе.
Пример 1
brackets=")()(", pinned="0110" → True

Свободны позиции 0 и 3. Ставим туда ( и ): получается (()).

Пример 2
brackets="())(", pinned="1110" → False

Первые три символа закреплены, и уже на ()) скобок ) больше, чем ( — это не исправить.

Пример 3
brackets="(((", pinned="000" → False

Длина нечётная — правильной скобочной последовательности не получится.

Ограничения
  • 1 ≤ len(brackets) = len(pinned) ≤ 10⁵
  • brackets состоит из ( и )
  • pinned состоит из 0 и 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКаждая буква по разу СредняяВычеркнуть цифры ради минимума СредняяНаименьшая последовательность по стрелкам СредняяСкобки со звёздочками СредняяСколько скобок дописать Средняя
загружаем Python…
Вход
brackets=")()(", pinned="0110"
Ожидается
True

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