代码重有说明!!!
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]; } };