Menu
CoddyTech

Decode Ways

中等动态规划python iconjava iconcpp iconc iconjs icon+10

一条由大写字母组成的消息按照 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