Blogs Hub

Convert a Number to Hexadecimal - Bit Manipulation - Easy - LeetCode

Convert a Number to Hexadecimal - Bit Manipulation - Easy - LeetCode

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 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.
Example 1:

Input:
26

Output:
"1a"
Example 2:

Input:
-1

Output:
"ffffffff"

public class Solution {
    public string ToHex(int num) {
        if(num==0){
            return "0";
        }
        
        var map = new char[]{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
        var arr = new char[8];
        int index = 7;
        int sum = 0;
        int count = 0;
        for(int i=0;i<32;i++){
            sum+=(int)Math.Pow(2,i%4)*(num&1);
            num=num>>1;
            count++;
            if(count%4==0){
                arr[index]=map[sum];
                sum=0;              
                index--;
            }
        }
        
        var sb = new StringBuilder();
        bool digitStarted = false;
        for(int i=0;i<arr.Length;i++){
            if(arr[i]!='0' && !digitStarted){
                digitStarted = true;
                sb.Append(arr[i]);
            }
            else if(digitStarted){
                sb.Append(arr[i]);
            }
        }
        return sb.ToString();
    }
}

Time Complexity: O(n)

Space Complexity: O(n)