zoukankan      html  css  js  c++  java
  • 把数字翻译成字符串

    思路

    $假设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];
        }
    }
    
    
    不一样的烟火
  • 相关阅读:
    技术一定要动手做一遍才算自已的
    终于提离职了,感觉如释重负
    自我评定与学习计划
    MYSQL---INSERT...SELECT...
    MYSQL---LIMIT
    SQL---having
    MYSQL---数据定义
    CSS---Block和inline元素对比
    CSS---清除浮动
    T-SQL---分页语句
  • 原文地址:https://www.cnblogs.com/cstdio1/p/13308204.html
Copyright © 2011-2022 走看看