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)


