代码重有说明!!!
class Solution {
public:
/**
* 解码
* @param nums string字符串 数字串
* @return int整型
*/
/*
考虑最后一个字符和最后两个字符的情况
f[i]为前i个(第i-1个结束)字符编码结果的种数
f[i]=f[i-1](s[i-1]为一个字符)+f[i-2](s[i-2]s[i-1]为一个字符;
f[0]=1;
*/
int solve(string nums) {
// write code here
int f[1000000];
//memset(f,0,sizeof(f));
int n=nums.size();
f[0]=1;
//f[1]=(nums[0]-'0')>0?1:0;
for(int i=1;i<=n;i++)
{
f[i]=0;
int t=nums[i-1]-'0';
if(t>=1&&t<=9)
f[i]+=f[i-1];
if(i>=2)
{
int t1=nums[i-1]-'0';
int t2=nums[i-2]-'0';
int num=10*t2+t1;
if(num<=26&&num>=10)
f[i]+=f[i-2];
}
}
return f[n];
}
};
京公网安备 11010502036488号