原题如下:
一条包含字母 A-Z 的消息通过以下方式进行了编码:
‘A’ -> 1
‘B’ -> 2
…
‘Z’ -> 26
给定一个只包含数字的非空字符串,请计算解码方法的总数。
示例 1:
输入: “12”
输出: 2
解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。
示例 2:
输入: “226”
输出: 3
解释: 它可以解码为 “BZ” (2 26), “VF” (22 6), 或者 “BBF” (2 2 6) 。
这题 你需要注意以下几点:
1).s的首部不能是0!!
2).中间部分可以是0但是 它的前面那个数字必须是1 或者2(以上两点需要在开始计算前 先遍历一遍)
3).计算过程中如果遇到0怎么办???(我们需要把这个0与他前面那个数字x(如果步骤1和步骤2做过了 只可能是1或者2)绑定在一起 )
4).绑定的那个 x不能再与(x之前那个数字组合在一起 假设前面那个数字存在的话) ps:::比如 1220 (“20”是要在一起的 同时22虽然我们可以解码出来一个字符 但是 20已经被绑住一起了!!!)
5).对于 一个串 s 他的解码个数是不是直接由 (前面s.size()-1 个推倒出来 的 比如s=123 假设我已经知道 “23”的解码个数为k 能否直接推倒 出 “123”的个数)??&