Ctrl K

Ровные блоки сигнала

Лёгкая
Датчик записал сигнал строкой signal из нулей и единиц. Назовём отрезок (непрерывную подстроку) ровным блоком, если он состоит из нескольких нулей подряд и стольких же единиц подряд — в любом порядке: сначала нули, потом единицы, или наоборот. Например, "000111" и "10" — ровные блоки, а "0101" и "0011100" — нет. Посчитайте, сколько отрезков signal являются ровными блоками. Одинаковые по содержанию отрезки, стоящие в разных местах, считаются отдельно.
Пример 1
signal="0011100" → 4

Подходят «01», «0011», «10» и «1100» — четыре отрезка. «001110» не годится: единиц три, а нулей два.

Пример 2
signal="1010" → 3

Каждая соседняя пара разных символов — свой отрезок: «10», «01», «10».

Пример 3
signal="1111" → 0

Нулей нет вовсе, значит и подходящих отрезков нет.

Ограничения
  • 1 ≤ len(signal) ≤ 10⁵
  • signal[i] — '0' или '1'
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиГде начинается фрагмент ЛёгкаяФраза-перевёртыш ЛёгкаяЧисло вверх ногами ЛёгкаяПеревернуть символы на месте ЛёгкаяГласные в обратном порядке Лёгкая
загружаем Python…
Вход
signal="0011100"
Ожидается
4

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