博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 405. Convert a Number to Hexadecimal (把一个数转化为16进制)
阅读量:5034 次
发布时间:2019-06-12

本文共 2210 字,大约阅读时间需要 7 分钟。

Given an integer, write an algorithm to convert it to hexadecimal. For negative integer,  method is used.

Note:

  1. All letters in hexadecimal (a-f) must be in lowercase.
  2. The hexadecimal string must not contain extra leading 0s. If the number is zero, it is represented by a single zero character '0'; otherwise, the first character in the hexadecimal string will not be the zero character.
  3. The given number is guaranteed to fit within the range of a 32-bit signed integer.
  4. You must not use any method provided by the library which converts/formats the number to hex directly.

题目标签:Bit Manipulation

  这道题目给了我们一个int 数字,我们需要把它转化成16进制,并且要把leading zeros都去掉。首先设立一个map把10-a, 11-b, 12-c,13-d,14-e,15-f 存入map。设一个for loop走32次, 因为16进制是4个bits为一组,所以这个loop可以设为i=i+4;然后每一次loop,需要一个进制位数,1,2,4,8, 利用num & 1把最右边的bit 拿出来 * 进制位数(1,2,4,8),再利用 >> 1 把bits往右移一位。当4格bits的总和知道以后,如果比10小,直接保存,如果大于等于10,就去map里找到对应的值存入。最后一步就是去掉leading zeros。

 

Java Solution:

Runtime beats 27.25% 

完成日期:06/28/2017

关键词:Bit Manipulation

关键点:利用 & 1拿到bit, 利用 >> 来移动bits

 

1 public class Solution  2 { 3     public String toHex(int num)  4     { 5         if(num == 0) 6             return "0"; 7          8         HashMap
map = new HashMap<>(); 9 StringBuilder str = new StringBuilder();10 String res = "";11 12 map.put(10, "a");13 map.put(11, "b");14 map.put(12, "c");15 map.put(13, "d");16 map.put(14, "e");17 map.put(15, "f");18 19 for(int i=0; i<31; i=i+4) // iterate 32 bits20 {21 int sum = 0;22 for(int j=1; j<=8; j=j*2) // get 4 bits sum 23 {24 sum += (num & 1) * j;25 num = num >> 1;26 }27 28 if(sum < 10)29 str.insert(0, sum);30 else 31 {32 str.insert(0, map.get(sum));33 }34 }35 36 37 res = str.toString();38 // get rid of leading zeros39 for(int i=0; i

参考资料:

https://stackoverflow.com/questions/2800739/how-to-remove-leading-zeros-from-alphanumeric-text

 

LeetCode 算法题目列表 - 

转载于:https://www.cnblogs.com/jimmycheng/p/7092222.html

你可能感兴趣的文章
二叉树的遍历 - 数据结构和算法46
查看>>
类模板 - C++快速入门45
查看>>
http权威指南完整版
查看>>
织梦DedeCms调用全站相关文章方法
查看>>
[转载]JDK的动态代理深入解析(Proxy,InvocationHandler)
查看>>
StackOverflow程序员推荐:每个程序员都应读的30本书(转载)
查看>>
Linux shell - 除法保留小数点
查看>>
自适应页面设计方法
查看>>
Collection接口
查看>>
Oracle数据库sys为什么只能以sysdba登录
查看>>
文件内光标的的移动 文件的修改
查看>>
元素居中
查看>>
回调函数参数问题,闭包解决方案示例
查看>>
对函数调用约定的理解
查看>>
centos7 搭建vsftp服务器
查看>>
RijndaelManaged 加密
查看>>
Android 音量调节
查看>>
HTML&CSS基础学习笔记1.28-给网页添加一个css样式
查看>>
windows上面链接使用linux上面的docker daemon
查看>>
Redis事务
查看>>