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];
}



京公网安备 11010502036488号