AlgoMaster Logo

Decode Ways

s=1226
1public int numDecodings(String s) {
2    if (s == null || s.length() == 0 || s.charAt(0) == '0') return 0;
3
4    int n = s.length();
5    int[] dp = new int[n + 1];
6    dp[0] = 1;
7
8    for (int i = 1; i <= n; i++) {
9        // Single digit decode
10        if (s.charAt(i - 1) != '0') {
11            dp[i] += dp[i - 1];
12        }
13
14        // Two digit decode
15        if (i > 1 && (s.charAt(i - 2) == '1' ||
16                     (s.charAt(i - 2) == '2' && s.charAt(i - 1) <= '6'))) {
17            dp[i] += dp[i - 2];
18        }
19    }
20
21    return dp[n];
22}
0 / 17
1226StringDP Array (# of Ways)