405. Convert a Number to Hexadecimal
1. Description
Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.
2. Note
- All letters in hexadecimal (a-f) must be in lowercase.
- 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.
- 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.
3. Example
Example 1:
Input: 26
Output: “1a”
Example 2:
Input: -1
Output: “ffffffff”
4. Solutions
My Accepted Solution
n = num
Time complexity: O(n)
Space complexity: O(n)
class Solution
{
public:
// string toHex(int num)
string toHex(int num)
{
if(num == 0) return string("0");
string result;
unsigned int number = num;
while(number)
{
int remainder = number % 16;
result.push_back(remainder < 10 ? '0' + remainder : 'a' + remainder - 10);
number /= 16;
}
reverse(result.begin(), result.end());
return result;
}
};
4.1 Convert 4bit Number Into Char
n = num
Time complexity: O(n)
Space complexity: O(n)
class Solution
{
public:
// string toHex(int num)
string toHex(int num)
{
if(num == 0) return string("0");
string result;
int rightMoveTimes = 0;
while(num && rightMoveTimes < 8)
{
int digit = num & 0xf;
result.push_back(digit < 10 ? '0' + digit : 'a' + digit - 10);
num >>= 4;
rightMoveTimes++;
}
reverse(result.begin(), result.end());
return result;
}
};