给定一个数字,我们按照如下规则把它翻译为字符串: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位置,也就是前一个