Ctrl K

Буквенный код с джокерами

Сложная
Буквы зашифрованы числами: A — 1, B — 2, …, Z — 26. Сообщение записали подряд, без разделителей, поэтому одну строку цифр часто можно прочитать по-разному: например, 126 — это ABF, LF или AZ. Число с ведущим нулём (05) буквой не считается, одиночный 0 — тоже. Часть цифр стёрлась: на их месте стоит *, и это может быть любая цифра от 1 до 9 (но не 0). Разные замены звёздочек дают разные сообщения, и все их прочтения считаются. По строке code из цифр и звёздочек верните общее число способов прочитать её как текст. Ответ может быть огромным — верните его по модулю 10⁹ + 7.
Пример 1
code="3*" → 9

* превращается в любую цифру от 1 до 9. Каждый вариант читается по одной цифре (9 способов), а двузначные 31…39 буквами не бывают — они больше 26. Итого 9.

Пример 2
code="*0" → 2

Ноль сам по себе не буква, поэтому он обязан идти в паре: подходят только 10 и 20. Ответ 2.

Пример 3
code="12" → 2

1 2 — это AB, а 12 — это L. Два прочтения.

Ограничения
  • 1 ≤ len(code) ≤ 10⁵
  • code состоит из цифр и символов *
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиШаблон с точкой и звёздочкой СложнаяСамый длинный сбалансированный отрезок скобок СложнаяПодходит ли строка под шаблон СложнаяПеретасовка разрезами СложнаяСколькими способами вычеркнуть Сложная
загружаем Python…
Вход
code="3*"
Ожидается
9

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