Difficulty: Easy

Related Topics: Bit Manipulation

Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, method is used.

Note:

  1. All letters in hexadecimal (a-f) must be in lowercase.
  2. 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.
  3. The given number is guaranteed to fit within the range of a 32-bit signed integer.
  4. You must not use any method provided by the library which converts/formats the number to hex directly.

Example 1:

  1. Input:
  2. 26
  3. Output:
  4. "1a"

Example 2:

Input:
-1

Output:
"ffffffff"

Solution

Language: Java

class Solution {
    private static char[] lookup = {'0', '1', '2', '3', 
                                    '4', '5', '6', '7',
                                    '8', '9', 'a', 'b',
                                    'c', 'd', 'e', 'f'};

    public String toHex(int num) {
        if (num == 0) return "0";

        StringBuilder sb = new StringBuilder();

        for (int i = num; i != 0; i >>>= 4) {
            sb.append(lookup[i & 0xF]);
        }

        sb.reverse();

        return sb.toString();
    }
}