class Solution { private: vector<int> f; public: int getF(int index) { if (index < 0) return 1; else return f[index]; } int numDecodings(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function if (s.size() == 0) return 0; f.resize(s.size()); for(int i = 0; i < s.size(); i++) { f[i] = 0; if (i >= 1) { string a(s, i - 1, 2); if ("10" <= a && a <= "26") f[i] += getF(i-2); if ('1' <= s[i] && s[i] <= '9') f[i] += getF(i-1); } else { if ('1' <= s[i] && s[i] <= '9') f[i] = 1; } } return f[f.size() - 1]; } };