首页 > 代码库 > 【Leetcode】Decode Ways (DP)

【Leetcode】Decode Ways (DP)

A message containing letters from A-Z is being encoded to numbers using the following mapping:

‘A‘ -> 1
‘B‘ -> 2
...
‘Z‘ -> 26

Given an encoded message containing digits, determine the total number of ways to decode it.

For example,
Given encoded message "12", it could be decoded as "AB" (1 2) or "L" (12).

The number of ways decoding "12" is 2.

curNum:代表当前数的解码数量

num2: 前一个数的解码数量

num1: 前两个数的解码数量

    public int numDecodings(String s) {
		if (s == null || s.length() == 0 || s.charAt(0) == '0')
			return 0;
		int num1 = 1;
		int num2 = 1;
		int curNum = 1;

		for (int i = 1; i < s.length(); i++) {
			if (s.charAt(i) == '0') {
				if (s.charAt(i-1) == '1' || s.charAt(i-1) == '2')
					curNum = num1;
				else
					return 0;
			}
			else {
			    if(s.charAt(i-1)=='1'||s.charAt(i-1)=='2'&&s.charAt(i)>='1'&&s.charAt(i)<='6')
			        curNum = num1+num2;
			    else
			        curNum = num2;
			}
			num1=num2;
			num2=curNum;
		}
		return curNum;
	}


【Leetcode】Decode Ways (DP)