题目地址:
https://leetcode.com/problems/convert-a-number-to-hexadecimal/
将一个位整数转换为进制表示。负数按照取反加一的方式表示。直接按二进制位四个四个的取一下即可。代码如下:
public class Solution {
public String toHex(int num) {
// 0需要特判
if (num == 0) {
return "0";
}
StringBuilder sb = new StringBuilder();
while (num != 0) {
// 取出最后四位
int four = num & ((1 << 4) - 1);
// 右移四位。这里需要用java里的无符号右移>>>
num >>>= 4;
if (four < 10) {
sb.append(four);
} else {
sb.append((char) ('a' + (four - 10)));
}
}
return sb.reverse().toString();
}
}
时空复杂度。