面试46.把数字翻译成字符串
动态规划
思路
代码
public int translateNum(int num) {
String s=String.valueOf(num);
int a=1,b=1;
for(int i=2;i<=s.length();i++){
String tmp=s.substring(i-2,i);
int c=tmp.compareTo("10")>=0&&tmp.compareTo("25")<=0?a+b:a;
b=a;
a=c;
}
return a;
}
优化
public int translateNum2(int num){
int a=1,b=1,x,y=num%10;
//从右往左
while(num!=0){
num/=10;
x=num%10;
int tmp=x*10+y;
int c=(tmp>=10&&tmp<=25)?a+b:a;
b=a;
a=c;
y=x;
}
return a;
}
参考链接