Ctrl K

Переворот окна в двоичной строке

Средняя
Дана строка bits из символов 0 и 1 и число width. За один ход можно выбрать любой непрерывный кусок строки длиной ровно width и инвертировать его: все 0 в нём становятся 1, а все 1 — 0. Ходов можно сделать сколько угодно, в том числе ни одного. Сколько различных строк можно получить таким образом? Исходная строка тоже считается. Ответ может быть большим — верните его по модулю 10⁹ + 7.
Пример 1
bits='0110', width=2 → 8

Окон длины 2 три (с позиций 0, 1 и 2), и любое их подмножество даёт свою строку: 2³ = 8 вариантов, включая исходную.

Пример 2
bits='101', width=3 → 2

Окно одно — вся строка. Получаются «101» и «010».

Пример 3
bits='1', width=1 → 2
Ограничения
  • 1 ≤ width ≤ bits.length ≤ 10⁵
  • bits состоит только из символов 0 и 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЧисло римскими цифрами СредняяУмножение длинных чисел в строках СредняяЗапись дроби десятичной СредняяКалькулятор на четыре действия СредняяВсе результаты расстановки скобок Средняя
загружаем Python…
Вход
bits='0110', width=2
Ожидается
8

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