[LeetCode] 91. Decode Ways
来源:互联网 发布:布道者软件 编辑:程序博客网 时间:2024/06/05 20:30
[LeetCode] 91. Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping:
‘A’ -> 1
‘B’ -> 2
…
‘Z’ -> 26
Given an encoded message containing digits, determine the total number of ways to decode it.
For example,
Given encoded message “12”, it could be decoded as “AB” (1 2) or “L” (12).
The number of ways decoding “12” is 2.
思路:用动规。
dp[i]表示从s[0:i]可以构造多少种code。
所以dp[i]分成三种状态:
- s[i] == ‘0’。
- s[i] == ‘1~6’。
- s[i] == ‘7~9’。
对于1、2的情况,我们考虑 s[i-1] == ‘1~2’,用以判断是否可以构成一个code。
对于3的情况,我们考虑s[i-1] == ‘1’,用以判断是否可以构成一个code。
class Solution {public: int numDecodings(string s) { int len = s.length(); vector<int> dp(len+1, 0); for (int i=0; i<len; ++i) { if (i == 0) { if (s[i] == '0') return 0; else dp[i] = 1; } else { if (s[i] == '0') { if (s[i-1] >= '1' && s[i-1] <= '2') { if (i-2 < 0) dp[i] = 1; else dp[i] = dp[i-2]; } else { dp[i] = 0; } } else if (s[i] <= '6') { if (s[i-1] >= '1' && s[i-1] <= '2') { if (i-2 < 0) dp[i] = dp[i-1] + 1; else dp[i] = dp[i-2] + dp[i-1]; } else { dp[i] = dp[i-1]; } } else { if (s[i-1] == '1') { if (i-2 < 0) dp[i] = dp[i-1] + 1; else dp[i] = dp[i-2] + dp[i-1]; } else { dp[i] = dp[i-1]; } } } } return dp[len-1]; }};
0 0
- Leetcode 91. Decode Ways&&639.Decode ways
- [Leetcode] 91. Decode Ways
- LeetCode --- 91. Decode Ways
- [LeetCode]91.Decode Ways
- [leetcode] 91.Decode Ways
- [leetcode] 91. Decode Ways
- Leetcode 91. Decode Ways
- leetcode 91. Decode Ways
- Leetcode 91. Decode Ways
- leetcode 91. Decode Ways
- LeetCode 91. Decode Ways
- LeetCode *** 91. Decode Ways
- Leetcode:91. Decode Ways
- leetcode 91. Decode Ways
- LeetCode-91.Decode Ways
- LeetCode 91. Decode Ways
- leetcode.91. Decode Ways
- [leetcode]91. Decode Ways
- rt2860v2源码分析三
- unity客户端
- ASP.NET MVC中使用Log4Net
- Android AsyncTask使用详解
- 算法分析课每周练习 Max Points on a Line
- [LeetCode] 91. Decode Ways
- ant使用
- nginx启用brotli压缩算法
- 文章标题
- 关于并行计算的一些名词
- jackjson实现javabean转换为json
- 1.2.4 Box of Bricks
- CSS3选择器
- ASP.NET MVC中使用Spring.Net实现IOC和DI