Ctrl K

Ряд ламп и одна замена

Средняя
Ряд ламп записан строкой lamps: '1' — лампа горит, '0' — не горит. Разрешено не более одного раза сделать **замену** из двух шагов: 1. Погасить целиком сплошной блок горящих ламп, у которого и слева, и справа стоят негорящие лампы. 2. Затем зажечь целиком сплошной блок негорящих ламп, с обеих сторон которого стоят горящие. Считайте, что за краями ряда стоят две невидимые горящие лампы: они ограничивают тёмные блоки у краёв, но сами в ответ не входят. Блок горящих ламп у самого края поэтому погасить нельзя. Верните наибольшее число горящих ламп, которого можно добиться.
Пример 1
lamps="0010001" → 7

Гасим одиночную 1 посередине — получаем тёмный участок 000000 длины 6 между светящимися краями, зажигаем его: 1111111, все 7 ламп горят.

Пример 2
lamps="0110" → 4

Блок 11 окружён тёмными лампами: гасим его, получаем 0000 и зажигаем целиком — 4 лампы.

Пример 3
lamps="10" → 1

Единственный светящийся блок стоит у края, слева от него тёмной лампы нет, поэтому замена невозможна. Горит 1 лампа.

Ограничения
  • 1 ≤ len(lamps) ≤ 10⁵
  • lamps состоит только из символов '0' и '1'
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
загружаем Python…
Вход
lamps="0010001"
Ожидается
7

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