代码重有说明!!!

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];
    }
};