zoukankan      html  css  js  c++  java
  • 405. Convert a Number to Hexadecimal

    。。感觉做的很蠢。

    主要就是看负数怎么处理。

    举个例子,比如8位:
    0111 1111 = 127
    1111 1111 = -1
    1000 0000 = -128
    正常情况1111 1111应该是256,就是最大值127+最小值的绝对值128+1+num

    其实点开那个提供的WIKI链接就一目了然了。。

    用LONG是怕溢出

    public class Solution {
        
        char[] b = new char[16];
        
        public String toHex(int num) 
        {
            if(num == 0) return "0";
            
            long a = 0;
            if(num < 0) 
                a = (long)Integer.MAX_VALUE+(-1)*(long)Integer.MIN_VALUE+num+1;
            else 
                a = (long) num;
            
            
            
            for(int i = 0; i < 10;i++) b[i] = (char)('0'+i);
            b[10] = 'a';
            b[11] = 'b';
            b[12] = 'c';
            b[13] = 'd';
            b[14] = 'e';
            b[15] = 'f';
            
            return helper(a);
            
            
        }
        
        public String helper(long a)
        {
            String res = "";
            while(a >= 16)
            {
                 res += helper(a/16);
                 a%=16;
            }
            
            return res + b[(int)a];
            
        }
    }
    

    二刷。

    通刷这个题也卡了,次奥。
    看了新的简单的做法。
    我们可以把4位4位的来看NUM,因为4位bits代表的就是16进制。
    右移要用>>>而不是>>,因为后者会帮你添加符号,而我们恰好不能让它这么做。。因为16禁止最后是没符号的。

    public class Solution {
        public String toHex(int num) {
            if(num == 0) return "0";
            
            StringBuilder sb = new StringBuilder();
            char[] digits = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};  // map
            
            
            while(num != 0){
                sb.append(digits[(num & 15)]);
                num = num >>> 4;
            }
            
            return sb.reverse().toString();
            
        }
        
        
    
    }
    

    顺便,cnblog该如何搜搜发过的随笔。。

  • 相关阅读:
    Python 之 编程中常见错误
    Python 列表(数组)初识
    Python 字符串处理
    QT学习笔记三 窗口类型
    C++ Primer第五版学习笔记十 引用与指针
    C++ Primer第五版学习笔记九 变量及初始化,声明和定义,作用域
    angularf封装echarts
    记录npm yarn安装遇到的问题
    网页中嵌入google地图
    og协议-有利于SNS网站分享
  • 原文地址:https://www.cnblogs.com/reboot329/p/5907841.html
Copyright © 2011-2022 走看看