class Solution {
public:
/**
* 解码
* @param nums string字符串 数字串
* @return int整型
*/
int solve(string nums) {
// write code here
int n = nums.size();
vector<int> f(n + 1, 0);
// 初始化
if(nums[0] > '0')
f[0] = f[1] = 1;
for(int i = 1; i < n; i++) {
auto c = nums[i];
auto pre = nums[i-1];
if(pre == '0' && c == '0')
continue;
f[i + 1] = f[i]; // 当前的字符翻译需要一位数
if(pre > '0' && pre <= '2') {
if(pre == '2' && c > '6' || c == '0') // 二位数字符和一位数字符情况相同
continue;
f[i + 1] += f[i - 1];
}
}
return f[n];
}
};