class Solution {
public int numDecodings(String s) {
int n =s.length();
if(n==0) return 0;
int[] dp = new int[n+1];
dp[n]=1;
dp[n-1]= s.charAt(n-1)=='0'? 0:1;
for(int i=n-2;i>=0;i--){
int one = Integer.parseInt(s.substring(i,i+1));
int two = Integer.parseInt(s.substring(i,i+2));
if(one>=1&&one<=9) dp[i]+=dp[i+1];
if(two>=10&&two<=26) dp[i]+=dp[i+2];
}
return dp[0];
}
}
编码区间是[0,25]
follow up 编码不连续