Ctrl K

Единицы пробираются вперёд

Средняя
Дана строка bits из символов 0 и 1. Каждую секунду все вхождения "01" одновременно заменяются на "10": каждая единица, перед которой стоит ноль, меняется с ним местами. Процесс повторяется, пока в строке остаётся хотя бы одно вхождение "01". Верните, сколько секунд он продлится. Прямое моделирование работает за O(n²). Получится ли за O(n)?
Пример 1
bits="1001" → 2

"1001" → "1010" → "1100": две секунды.

Пример 2
bits="0011" → 3

"0011" → "0101" → "1010" → "1100". Вторая единица ждёт, пока первая освободит ей дорогу, поэтому секунд три, а не две.

Пример 3
bits="110" → 0

Пары "01" нет с самого начала.

Ограничения
  • 1 ≤ len(bits) ≤ 1000
  • bits состоит только из символов 0 и 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный зеркальный кусок СредняяВсе правильные скобочные строки СредняяУмножение длинных чисел в строках СредняяНаименьшее число правок СредняяСколькими способами прочитать шифр Средняя
загружаем Python…
Вход
bits="1001"
Ожидается
2

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