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.
解题思路
class Solution {
public:
int numDecodings(string s) {
if (s.size() == 0 || s[0] == '0') return 0;
int len = s.size();
int pre = 1, cur = 1;
for (int i = 1; i < len; ++i) {
int temp = 0;
if (s[i] != '0') {
temp += cur;
}
if (s[i-1] == '1' || (s[i-1] == '2' && s[i] < '7')) {
temp += pre;
}
pre = cur;
cur = temp;
}
return cur;
}
};
本文介绍了一种解决DecodeWays问题的方法,该问题是给定一个由A-Z字母编码成数字的消息,确定解码的不同方式总数。例如,12可以被解码为AB或L,共有2种解码方式。通过递推算法实现,关键在于正确处理边界条件及特殊情况。
429

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



