1. 程式人生 > >LeetCode 91.解碼方法 Decode Ways

LeetCode 91.解碼方法 Decode Ways

題目連結

每個字母對應一個數字,A->1,B->2,...

給定一個字串,只包含數字,那麼,字串有多少種解碼方式?

題目其實隱藏了一個條件,像01,02,。。。這些是沒有對應的字母的。如果出現00,那就直接返回0。

 

class Solution {
public:
    int numDecodings(string s) {
        int len=s.length();
        vector<int> a;//a[i]表示,字串從0~i,有多少種譯碼
        if(len<=0)  return 0;
        if(s[0]=='0')   return 0;
        a.push_back(1);
        for(int i=1;i<len;i++)
        {
            int sum=0;
            int c=(s[i-1]-'0')*10+s[i]-'0';
            if(s[i]!='0')
            {
                sum+=a[i-1];
            }
            
            if(c>=10&&c<=26)
            {
                if(i-2>=0)
                    sum+=a[i-2];
                else sum+=1;
            }
            if(c==0)    return 0;
            a.push_back(sum);
        }
        return a[len-1];
    }
};