我是靠谱客的博主 魁梧朋友,这篇文章主要介绍LeetCode405 10进制转16进制,现在分享给大家,希望可以做个参考。

题目描述

给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。

注意:

十六进制中所有字母(a-f)都必须是小写。
十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。
给定的数确保在32位有符号整数范围内。
不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。
示例 1:

输入:
26

输出:
“1a”
示例 2:

输入:
-1

输出:
“ffffffff”

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/convert-a-number-to-hexadecimal

算法思路

10进制先转为2进制,每4位2进制组成16进制的一个数字。num&0xf可以做到每4位分割。将结果存到字符串,最后记得翻转字符串得到结果。
32位2进制转换为16进制有8位,所以判断是否要进行转换,有符号数字移位之后如果字符串长度<8表示没转换完,无符号数字移位之后补0,则转换完成的num==0,判断条件应为sb.length()<8&&num!=0

示例代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution { public String toHex(int num) { if (num == 0) return "0"; char[] chars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; StringBuilder sb = new StringBuilder(); while (sb.length() < 8 && num != 0) { sb.append(chars[num & 0xf]); num >>= 4; } return sb.reverse().toString(); } }

最后

以上就是魁梧朋友最近收集整理的关于LeetCode405 10进制转16进制的全部内容,更多相关LeetCode405内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(109)

评论列表共有 0 条评论

立即
投稿
返回
顶部