前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发CSDN,mcf171专栏。
博客链接:mcf171的博客
——————————————————————————————
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.
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";
StringBuilder sb = new StringBuilder("");
while(num != 0){
int result = num & 15;
if(result < 10) sb.insert(0,result);
else{
switch(result){
case 10: sb.insert(0,'a');break;
case 11: sb.insert(0,'b');break;
case 12: sb.insert(0,'c');break;
case 13: sb.insert(0,'d');break;
case 14: sb.insert(0,'e');break;
case 15: sb.insert(0,'f');break;
}
}
num = num >>> 4;
}
return sb.toString();
}
}
这个题目一开始忘记除以16是移动4位了,我一直移动3位。。 Your runtime beats 11.35% of java submissions.