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;
    }
};
comments powered by Disqus