Decode Ways

LeetCode Q 91 - Decode Ways

A message containing letters from A-Z is being encoded to numbers using the following mapping:
'A' -> 1 'B' -> 2 ... 'Z' -> 26
Given a non-empty string containing only digits, determine the total number of ways to decode it.

Example 1:
Input: "12" ; Output: 2
Explanation: It could be decoded as “AB” (1 2) or “L” (12).
Example 2:
Input: "226" ; Output: 3
Explanation: It could be decoded as “BZ” (2 26), “VF” (22 6), or “BBF” (2 2 6).

Solution : DP

Code:

public int numDecodings(String s) {
	int[] dp = new int[s.length()]; 
	dp[0] = s.charAt(0) == '0' ? 0 : 1;
	for (int i = 1; i < s.length(); i++) {
		if (s.charAt(i) != '0')
			dp[i] += dp[i - 1];
		if (s.charAt(i - 1) == '1' || 
		    s.charAt(i - 1) == '2' && s.charAt(i) <= '6')
			dp[i] += i >= 2 ? dp[i - 2] : 1;
	}
	return dp[s.length() - 1];
}

   Reprint policy


《Decode Ways》 by Tong Shi is licensed under a Creative Commons Attribution 4.0 International License
  TOC