LeetCode 91.解碼方法 Decode Ways
阿新 • • 發佈:2018-12-11
每個字母對應一個數字,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]; } };