剑指 Offer 46. 把数字翻译成字符串Java题解

class Solution {
    public int translateNum(int num) {
        String str=String.valueOf(num);
        int len=str.length();
        if(len<2)
            return len;
        char[] c=str.toCharArray();
        return dp(c);
    }
    public int dp(char[] c){
        //int[] dp=new int[c.length];
        //dp[0]=1;
        int x=1;
        int y=1;
        int z;
        for(int i=1;i<c.length;i++){
            //dp[i]=dp[i-1];
            z=y;
            int cn=10*(c[i-1]-'0')+(c[i]-'0');
            if(cn>9&&cn<26){
                if((i-2)<0){
                    //dp[i]++;
                    z++;
                }
                if((i-2)>=0){
                    //dp[i]+=dp[i-2];
                    z+=x;
                }   
            }
            x=y;
            y=z;
        }
        //return dp[c.length-1];
        return y;
    }
}

剑指 Offer 46. 把数字翻译成字符串Java题解_第1张图片

你可能感兴趣的:(剑指Offer,leetcode,算法,字符串)