public int solve (String nums) { // write code here int n=nums.length(); if(n==0||nums.charAt(0)=='0') return 0; if(n==1) return 1; int[] dp=new int[n+1]; dp[0]=1; dp[1]=1; for(int i=2;i<=n;i++){ //下面是核心部分,看个位数如果不是0,自己能构成一种情况 //两位数如果没超过26而且大于10,又能构成一种情况 int one=Integer.valueOf(nums.substring(i-1,i)); int two=Integer.valueOf(nums.substring(i-2,i)); if(one>=1) dp[i]+=dp[i-1]; if(two>=10&&two<=26){dp[i]+=dp[i-2];} } return dp[n]; }