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 编码不连续

results matching ""

    No results matching ""