https://oj.leetcode.com/problems/decode-ways/
http://blog.csdn.net/linhuanmars/article/details/24570759
public class Solution { public int numDecodings(String s) { if (s == null || s.length() == 0) return 0; // invalid input char[] chars = s.toCharArray(); if (chars[0] == ‘0‘) return 0; int[] ways = new int[chars.length]; ways[0] = 1; for (int i = 1 ; i < chars.length ; i ++) { char c = chars[i]; char lastc = chars[i - 1]; if (c == ‘0‘) { if (lastc == ‘1‘ || lastc == ‘2‘) { if (i == 1) ways[i] = 1; else ways[i] = ways[i - 2]; } else return 0; } else // not 0 { if (lastc == ‘0‘ || lastc > ‘2‘) // Cannot 2 char ways[i] = ways[i - 1]; else if (lastc == ‘2‘ && c > ‘6‘ && c <=‘9‘) ways[i] = ways[i - 1]; else if (i == 1) ways[i] = 2; else ways[i] = ways[i - 1] + ways[i - 2]; } } return ways[chars.length - 1]; } }
原文:http://7371901.blog.51cto.com/7361901/1599328