Leetcode 91. Decode Ways
2017-12-04 19:48
387 查看
91. Decode Ways
A message containing letters from
being encoded to numbers using the following mapping:
Given an encoded message containing digits, determine the total number of ways to decode it.
For example,
Given encoded message
2) or
The number of ways decoding
A message containing letters from
A-Zis
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.
/* 题意:字母表A-Z对应数字1-26,给定字符串S,问有多少种解码方式 思路:设状态dp[i]表示字符串前i个字符能表示的解码个数。那么它依赖于dp[i-1]和dp[i-2] 具体的依赖关系如下: (1)s[i] == '0',如果满足s[i-1] == '1' || s[i-1] == '2' 则dp[i] = dp[i-2],否则返回0 (2)不满足条件1,但是满足s[i-1] == '1' || (s[i-1] == '2' && s[i] <= '6')则 dp[i] = dp[i-1] + dp[i-2] (3)不满足前两个条件,则dp[i] = dp[i-1] */ class Solution { public: int numDecodings(string s) { int len = s.length(); if(!len) return 0; vector<int> dp(len + 1, 0); dp[0] = 1; for(int i = 1; i <= len; i++){ if(s[i-1] == '0'){ if(i > 1 && (s[i-2] == '1' || s[i-2] == '2')) dp[i] = dp[i-2]; else return 0; } else if(i > 1 && (s[i-2] == '1' || (s[i-2] == '2' && s[i-1] <= '6'))) dp[i] = dp[i-1] + dp[i-2]; else dp[i] = dp[i-1]; } return dp[len]; } };
相关文章推荐
- 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(Java)
- Leetcode——91. Decode Ways
- (Java) LeetCode 91. Decode Ways —— 解码方法
- [LeetCode] 91. Decode Ways
- Leetcode 91. Decode Ways (Medium) (cpp)
- LeetCode 91. Decode Ways(解码方法)
- Leetcode 91. Decode Ways&&639.Decode ways
- Leetcode 91. Decode Ways
- LeetCode 91. Decode Ways
- Leetcode 91. Decode Ways
- [LeetCode] 91. Decode Ways 解码方法