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%的用户

  • 相关阅读:
    最短路详解
    树状数组基础
    并查集初步
    python shell的交互模式和文本编辑模式
    基于python的selenium自动化测试环境搭建
    Nagios基本搭建
    mysql错误代码对照表较完整
    搭建phpMyAdmin
    Cent OS 7 搭建MySQL
    详解封装源码包成RPM包
  • 原文地址:https://www.cnblogs.com/liuyongyu/p/14205493.html
Copyright © 2011-2022 走看看