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.

lock icon+25 скрытых тестов при отправке

challenge icon

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

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

Сбросить код
def numDecodings(s):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

s = "2611"

Ожидается

4