描述
有一个消息包含A-Z通过以下规则编码
‘A’ -> 1
‘B’ -> 2
…
‘Z’ -> 26
现在给你一个加密过后的消息,问有几种解码的方式
样例
1
输入: “12”
输出: 2
解释: 它可以被解码为 AB (1 2) 或 L (12).
2
输入: “10”
输出: 1
思路
动态规划 dp[i]表示0~i的字符串的解码方式的个数
dp[i]取决于两种 dp[i-1]和dp[i-2],根据s[i-1]和s[i]来决定
如果s[i]不为0,那么dp[i]可以由s[i]和s[0]~s[i-1]的字符串构成
如果s[i-1]s[i]符合要求,即小于等于26,且不为0,那么可以由s[i-1]s[i]和s[0]~s[i-2]的字符串构成
取两者和即可
代码
1 | class Solution { |
-------------end of file
thanks for reading-------------