面试46.把数字翻译成字符串

image-20200610194627428

动态规划

思路

原文

image-20200610195433159

代码

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;
}

参考链接

Krahets:动态规划,清晰图解

posted @ 2020-06-10 20:06  YH_Simon  阅读(123)  评论(0编辑  收藏  举报