首页 > 代码库 > LeetCode Convert a Number to Hexadecimal
LeetCode Convert a Number to Hexadecimal
原题链接在这里:https://leetcode.com/problems/convert-a-number-to-hexadecimal/
题目:
Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.
Note:
- All letters in hexadecimal (
a-f
) must be in lowercase. - The hexadecimal string must not contain extra leading
0
s. 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. - The given number is guaranteed to fit within the range of a 32-bit signed integer.
- You must not use any method provided by the library which converts/formats the number to hex directly.
Example 1:
Input: 26 Output: "1a"
Example 2:
Input: -1 Output: "ffffffff"
题解:
每4位组成一个hexadecimal digit, 每次取出最后4位和1111做位运算&得到一个digit.
num 右移4位,这里用>>>而不是>>. e.g. -1的two’s complement表示为ffffffff, 32位全是1 bit. 若用>> 首位的1 bit不会移动, while loop的condition num!=0不会出现.
Time Complexity: O(1). Space: O(1).
AC Java:
1 public class Solution { 2 public String toHex(int num) { 3 if(num == 0){ 4 return "0"; 5 } 6 7 StringBuilder sb = new StringBuilder(); 8 while(num != 0){ 9 int digit = num & 0xf; 10 sb.insert(0, digit<10 ? (char)(digit+‘0‘) : (char)(digit-10+‘a‘)); 11 num >>>= 4; 12 } 13 return sb.toString(); 14 } 15 }
LeetCode Convert a Number to Hexadecimal
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。