91. 解码方法
程序员文章站
2022-07-16 10:25:40
...
约束版的f(n) = f(n-1) + f(n-2);,其中如果是s[n-1]为0,f(n-1) = 0,f(n) = f(n-2),因为0无法单独解码,而f(n-2)的条件则是必须在1与26之间,否则f(n) = f(n-1)。
class Solution {
public:
int numDecodings(string s) {
int cnt = 0;
if(s.size() == 0 || (s.size() == 1 && s[0] == '0')){
return 0;
}
if(s.size() == 1){
return 1;
}
vector<int>dp(s.size() + 1,0);
dp[0] = 1;
for(int i = 0;i < s.size();i++){
if(s[i]!= '0'){
dp[i+1] = dp[i];
}
else{
dp[i+1] = 0;
}
if(i > 0 && (s[i-1] == '1' || (s[i - 1] == '2' && s[i] <= '6'))){
dp[i+1] += dp[i-1];
}
}
return dp.back();
}
};