512. Decode Ways
有一个消息包含A-Z
通过以下规则编码
'A' -> 1
'B' -> 2
...
'Z' -> 26
现在给你一个加密过后的消息,问有几种解码的方式
提示:首先合法输入f[0] = 1.遍历s从1到n-1。如果当前字符不等于0那么f[i]+=f[i-1],如果当前字符的前一个字符不为0,并且两者加起来是小于26的,那么结果还要加上法f[i-2](此时为结尾两个数字结合的情况)。
答案:
class Solution {
public:
/**
* @param s: a string, encoded message
* @return: an integer, the number of ways decoding
*/
int numDecodings(string &s) {
if (s == "" || s[0] == '0')
return 0;
int n = s.size();
vector<int> f(n, 0);
f[0] = 1;
for (int i = 1; i < n; i++) {
if (s[i] != '0')
f[i] += f[i-1];
if (s[i-1] !