leetcode 91. Decode Ways
一、问题描述
一条由A-Z字母组成的消息使用以下映射编码成数字:
'A' -> 1
'B' -> 2
...
'Z' -> 26
给定一个只包含数字的非空字符串,确定解码方法的总数。
【举例】
<例 1>
输入: "12"
输出: 2
解释: "AB" (1 2) or "L" (12).
<例 2>
输入: "226"
输出: 3
解释: "BZ" (2 26), "VF" (22 6), or "BBF" (2 2 6).
二、解题思路
dp[i]为长度为i的子串的总的编码方式
则初始状态 dp[0]=0 ; dp[1]=1
状态转移方程为:
dp[i] =
{
dp[i-1]+dp[i-2] i>2&&( s[i-2]=='1'||s[i-2]=='2'&&s[i-1]<='6' )
dp[i-1]+1 i==2
}
- dp[i]=dp[i-1] 状态表示单个数字有效可编码时,长度为i的子串编码方式数继承长度为i-1的编码方式数</