leetcode 405题 数字转换为十六进制数
给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。
注意:
十六进制中所有字母(a-f)都必须是小写。 十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。 给定的数确保在32位有符号整数范围内。 不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。
示例1
输入:
26
输出:
"1a"
示例2
输入:
-1
输出:
"ffffffff"
思路
通过不断整除16获取当前余数获取对应的十六进制数,知道循环 num 不大于0,最终把暂存的结果倒序返回
代码
/**
* @param {number} num
* @return {string}
*/
var toHex = function(num) {
if (num === 0) {
return '0';
}
if (num < 0) {
num = Math.pow(2, 32) - Math.abs(num);
}
const map = {
'0': '0',
'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
'10': 'a',
'11': 'b',
'12': 'c',
'13': 'd',
'14': 'e',
'15': 'f',
};
const bitArr = [];
while (num > 0) {
bitArr.push(map[num % 16]);
num = Math.floor(num / 16);
}
return bitArr.reverse().join('');
};
复杂度分析:
- 时间复杂度: O(N)
- 空间复杂度:O(N)
FEATURED TAGS
前端开发
H5
JavaScript
设计模式
browser
jQuery
源码分析
生活
leetcode
Array
Stack
Queue
Linked List
剑指offer
Binary Search Tree
Binary Tree
Breadth-First Search
Depth-First Search
String
Set
Binary Search
Sliding Window
Backtracking
Dynamic Programming
Two Pointers
Union Find
Sort
Bit Operation
Recursion
Map
Graph
Search
Hash
LinkedList
复盘
QuickSort
Trie
Design
MinHeap
Traverse
Min Heap
Node.js
BackEnd
SQL
MySQL
Design Patterns
Network
计算机网络
Python
SVG