解题思路:
根据题意,可按照下图的思路,总结出 “递推公式” (即转移方程)。
因此,此题可用动态规划解决,以下按照流程解题。
public int translateNum(int num) {
String s = String.valueOf(num);
int[] dp = new int[s.length()+1];
dp[0]=1;
dp[1]=1;
for (int i = 2; i < s.length(); i++) {
String temp = s.substring(i-2,i);
if (temp.compareTo("10")>=0&&temp.compareTo("25")<=0)
dp[i] = dp[i-1]+dp[i-1];
else dp[i]=dp[i-1];
}
return dp[s.length()];
}
优化/数字取余
public int translateNum(int num) {
int a = 1,b= 1,x,y = num%10;
while (num!=0){
num/=10;
x= num%10;
int two = x*10+y;
int c = (two>=10&&two<=25)?a+b:a;
b=a;
a=c;
y=x;
}
return a;
}