您的位置:首页 > 其它

Leetcode 405: Convert a Number to Hexadecimal

2017-01-08 22:11 381 查看
这题比较简单,不过要注意num为0的情况。

class Solution {
public:
string toHex(int num) {
string result;

unsigned int tmp_num = num;
if(!num)
return "0";

while(tmp_num)
{
char str[10];
int residual = tmp_num % 16;
tmp_num = tmp_num >> 4;

// cout << num << endl;

if(residual < 10)
{
char tmp = residual + '0';
result = tmp + result;
}
else
{
char tmp = residual - 10 + 'a';
result = tmp + result;
}
}

return result;
}
};


还有更高效的做法:这里要注意的一点就是对于有符号的数字的右移是算数右移,所以这里加入了一个计数器来计算负数的情况。

class Solution {
public:
string toHex(int num) {
string result;

if(!num)
return "0";
int count = 0;

while(num && count < 8)
{
char str[10];
int residual = num & 15;
num = num >> 4;

if(residual < 10)
{
char tmp = residual + '0';
result = tmp + result;
}
else
{
char tmp = residual - 10 + 'a';
result = tmp + result;
}

count++;
}

return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息