public int numDecodings(String s) {
        if (s.length() == 0 || s.charAt(0) == '0') {
            return 0;
        }
        int[] store = new int[s.length() + 1];
        store[0] = 1;
        store[1] = 1;
        if (s.charAt(s.length() - 1) == '0') {
            store[1] = 0;
        }
        for (int i = 2; i <= s.length(); i++) {
            if (s.charAt(s.length() - i) == '0') {
                store[i] = 0;
            } else if (s.charAt(s.length() - i) == '1') {
                store[i] = store[i - 1] + store[i - 2];
            } else if (s.charAt(s.length() - i) == '2') {
                if (s.charAt(s.length() - i + 1) <= '6') {
                    store[i] = store[i - 1] + store[i - 2];
                } else {
                    store[i] = store[i - 1];
                }
            } else {
                store[i] = store[i - 1];
            }
        }
        return store[store.length - 1];
    }