import java.util.*; public class Solution { /** * 解码 * @param nums string字符串 数字串 * @return int整型 */ public int solve (String nums) { if(nums == null) { return 0 ; } int len = nums.length() ; //dp[i]表示前i个字符有多少中译码结果 int dp[] = new int[len+1] ; dp[0] = 1 ; if(nums.charAt(0)=='0') { dp[1] = 0 ; } else{ dp[1] = 1 ; } for(int i = 2 ; i <= len ; i ++) { //看最后一个数字或者是最后俩个数字能不能被译码 //把这两种情况加起来就是总的种类数了 int last1 = Integer.parseInt(nums.substring(i-1 , i)) ; if(last1 > 0) { dp[i] = dp[i-1] ; } int last2 = Integer.parseInt(nums.substring(i-2 , i)) ; if( last2 <= 26 && last2 >= 10) { dp[i] += dp[i-2] ; } } return dp[len] ; } }