给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。

class Solution {
    public int translateNum(int num) {
        if(num==0) return 1;
        String s=String.valueOf(num);
        int a=1,b=1;
        int c=0;
        for(int i=2;i<=s.length();i++){
            String temp=s.substring(i-2,i);
            if(temp.compareTo("25")<=0&&temp.compareTo("10")>=0){
                c=a+b;
            }else{
                c=a;
            }
            b=a;
            a=c;
        }
        return a;

        
        
    }

}

方程是这样:

 

 代码思路:先转化成字符串,然后空位置和1位置都是1,每次取相邻两位,组成数在10-25,那么他就是单个和两个都行,也就是dp[i-1]+dp[i-2],否则只能单个,也就是和前一个一样,

每次两个之后, a设置成本次位置,b设置成原来a位置,也就是前一个