class Solution {
public:
/**
dp[i]:前i个字符编码 的结果
当nums[i]==0时不能单独存在只能依附nums[i-1]
当1<=nums[i-1]<=2 时
因为必须依附,反而减少,为dp[i-2]
否则组成不了 返回0
当nums[i]!=0, 可以不用依附。
当nums[i-1]+ nums[i] <= 26且nums[i-1]!=0 可以依附也可以不依附 dp[i] = dp[i-1] + dp[i-2]
否则 不能依附dp[i] = dp[i-1]
*/
int solve(string nums) {
// write code here
int n = nums.size();
vector<int> dp(n+1, 0); // 错一位存储
dp[0]=1;
if(nums[0]=='0') return 0;
else dp[1] = 1;
for(int i=1; i<n; i++){
if(nums[i]=='0'){
if(nums[i-1] == '1' || nums[i-1]=='2') dp[i+1] = dp[i-1];
else return 0;
}else{
string tmp;
tmp.push_back(nums[i-1]);
tmp.push_back(nums[i]);
if(nums[i-1]=='0' || tmp > "26") dp[i+1] = dp[i];
else dp[i+1] = dp[i]+dp[i-1];
}
}
return dp[n];
}
};
to_string() 将int float 等转化为string char 转化为stirng push_back()