import java.util.*; public class Solution { /** * 解码 * @param nums string字符串 数字串 * @return int整型 */ public int solve (String nums) { // write code here char[] chars = nums.toCharArray(); int [] dp = new int[chars.length]; // 考虑0的特殊情况 if (chars[0] == '0') { return 0; } dp[0] = 1; for (int i = 1; i < dp.length; i++) { // 分类讨论 // 1.考虑0的特殊情况 if (chars[i] == '0' && chars[i - 1] != '1' && chars[i - 1] !='2') { return 0; } if (chars[i] == '0') { if (i >= 2){ dp[i] = dp[i - 2]; }else { dp[i] = 1; } continue; } // 2.前数大于2 if (chars[i - 1] > '2') { dp[i] = dp[i - 1]; } // 3.前数等于2 if (chars[i - 1] == '2') { if (chars[i] > '6'){ dp[i] = dp[i - 1]; }else { if (i >= 2) { dp[i] = dp[i - 1] + dp[i - 2]; }else { dp[i] = 2; } } } // 3.前数为1 if (chars[i - 1] == '1') { if (i >= 2) { dp[i] = dp[i - 1] + dp[i - 2]; }else { dp[i] = 2; } } // 4.前数为0 if (chars[i - 1] == '0') { dp[i] = dp[i - 1]; } } return dp[dp.length - 1]; } }