首页 > 其他 > 详细

把数字翻译成字符串

时间:2020-07-15 22:41:28      阅读:58      评论:0      收藏:0      [点我收藏+]

技术分享图片

思路

$假设x_1x_2....x_{i-2}的翻译方式为f(i-2)种$

\(假设x_1x_2....x_{i-2}x_{i-1}的翻译方式为f(i-1)种\)

\(可以得出x_1x_2....x_{i-2}x_{i-1}x_i的翻译方式\)

1.\(x_{i-1}和xi可以组合翻译那就可以选择组合和不组合两种,组合就是f(i-2)种,不组合就是f(i-1)种,一共f(i-2)+f(i-1)种\)

2.\(x_{i-1}和xi不可以组合翻译所以只有f(i-1)种\)

由上面可以得出状态转移方程:

技术分享图片

dp[1]=1,至于dp[0]为什么等于1,举例:131,当读到3是和前面的1可以组合翻译应该是dp[2]= dp[2-1]+dp[2-2],可以看出来dp[2]明显是2;所以dp[0]=1.
注意:dp[1]才是以第一个字符结尾的翻译方案数而不是dp[0],dp[0]只是为了方面的一个值

代码

class Solution {
    public int translateNum(int num) {
    String str = num+"";
    String tmp="";
    int len = str.length();
    int []dp = new int[len+1];
    dp[0]=1;
    dp[1]=1;
    for(int i=2;i<len+1;i++){
       tmp = str.substring(i-2,i);
       if(tmp.compareTo("10")>=0&&tmp.compareTo("25")<=0){
            dp[i]=dp[i-1]+dp[i-2]; 
       }else{
           dp[i]=dp[i-1];
       } 
       
    }
    return dp[len];
    }
}

把数字翻译成字符串

原文:https://www.cnblogs.com/cstdio1/p/13308204.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!