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
0
s. 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.
解题思路:
利用递归方式解决,左孩子为右递归,右孩子为左递归。
Java-Solution:
public class Solution {
public String toHex(int num) {
if(num == 0) return "0";
int maxLoop = 8;
StringBuilder result = new StringBuilder();
while(Math.abs((double)num) > 0){
int rightMoved = num & 15;
result.append(assist(rightMoved));
num = num >> 4;
if(--maxLoop == 0){
break;
}
}
return result.reverse().toString();
}
private char assist(int rightMoved){
if(rightMoved >=0 && rightMoved <= 9){
return (char)(rightMoved + '0');
}
else{
return (char)(rightMoved - 10 + 'a');
}
}
}