Menu
CoddyTech

Decode Ways

Сообщение, состоящее из заглавных букв, закодировали с помощью A = 1, B = 2 и так далее до Z = 26, а коды записали без разделителей. Для данной строки цифр s верните количество сообщений, из которых она могла получиться.

Буква считывается по одной цифре или двум соседним цифрам, а код никогда не начинается с 0: 06 — это не 6, а отдельный 0 не является буквой. Если ни один вариант прочтения не подходит, верните 0.

Функция

numDecodings(s: string) → integer
sstring
строка цифр для декодирования
Возвращаетinteger
количество буквенных сообщений, кодируемых в s

Ограничения

  • 1 ≤ s.length ≤ 100
  • s содержит только цифры от 0 до 9, и может начинаться с 0.
  • У каждого префикса и каждого суффикса s меньше 231 вариантов прочтения, поэтому ответ и все промежуточные подсчёты помещаются в знаковое 32-битное целое число.

Примеры

Ввод
s = "2611"
Вывод
4
Пояснение
Четыре прочтения: 2 6 1 1 (BFAA), 26 1 1 (ZAA), 2 6 11 (BFK) и 26 11 (ZK). Средние цифры никогда не объединяются в пару, потому что 61 больше 26.
challenge icon

Дополнительный вопрос

Что, если s также может содержать *, обозначающую любую цифру от 1 до 9? Сможешь подсчитать количество вариантов прочтения за время O(n), по модулю 10^9+7?

Сбросить код
def numDecodings(s):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргумент

s = "2611"

Ожидаемый вывод

4