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

    题目链接:把数字翻译成字符串

    思路:从数字高位向低位进行遍历,假设遍历到第i个位置,那么开始判读可不可以和前面的数字进行组合:当不和前面的数字组合时,该位数字自己表示一个字符;当和前面数字组合时,先判断能不能组合,如01、31、26、40,这些只有一种翻译方式,也就是说只有和前面组合时位于[10,25]这个范围内才能进行翻译。所以有,当不能组合时(dp[i] = dp[i-1]),当可以组合时(dp[i]=dp[i-1]+dp[i-2])。可以看到结果只用到两个变量,所以不需要使用数组。

    代码:

    class Solution {
        public int translateNum(int num) {
            char[] n = String.valueOf(num).toCharArray();
            int res = 1;
            for(int i=1, pre1=1, pre2=1; i<n.length; i++){
                if(n[i-1]=='0' || n[i-1]>'2' || 
                n[i-1]=='2' && n[i]>'5' || 
                n[i] == '0' && n[i-1]!='1' && n[i-1]!='2'){
                    res = pre1;
                }else{
                    res = pre1 + pre2;
                }
                pre2 = pre1;
                pre1 = res;
            }
            return res;
        }
    }
    

    执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
    内存消耗:35 MB, 在所有 Java 提交中击败了93.79%的用户

  • 相关阅读:
    实验一
    requests/lxml的简单用例
    使用python的cookielib加载已保存的cookie维持登录状态
    计算机系统要素
    python实现部分实例
    ch2
    迷了迷了,外国人都看不懂的英语
    图形学名词解释
    ch17
    ServletConfig
  • 原文地址:https://www.cnblogs.com/liuyongyu/p/14205493.html
Copyright © 2011-2022 走看看