题目:
A message containing letters from A-Z is being encoded to numbers using the following mapping:
'A' -> 1
'B' -> 2
...
'Z' -> 26
Given a non-empty string containing only digits, determine the total number of ways to decode it.
代码(c++):
class Solution {
public:
int numDecodings(string s) {
if(s[0] == '0') return 0;
if(s.length() == 1) return 1;
int decode1, decode2;
decode1 = 1;
if((s[0] == '1') || (s[0] == '2' && s[1]-'0' <= 6)){
if(s[1] == '0') decode2 = 1;
else decode2 = 2;
}
else if(s[1] == '0') return 0;
else decode2 = 1;
for(int i = 2; i < s.length(); i++){
int temp = decode2;
if((s[i-1] == '1') || (s[i-1] == '2' && s[i]-'0' <= 6)) {
if(s[i] != '0') decode2 = decode1 * 2 + (decode2 - decode1);
else decode2 = decode1;
}
else if(s[i] == '0') return 0;
decode1 = temp;
}
return decode2;
}
};
本文深入探讨了将字母从A到Z编码为数字1至26的映射下,如何确定仅包含数字的非空字符串的解码方式总数。通过递归算法,详细解释了如何根据前两位数字的有效性来计算可能的解码路径。
1885

被折叠的 条评论
为什么被折叠?



