[leetcode]405. Convert a Number to Hexadecimal

Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.

Note:

  1. All letters in hexadecimal (a-f) must be in lowercase.
  2. 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.
  3. The given number is guaranteed to fit within the range of a 32-bit signed integer.
  4. You must not use any method provided by the library which converts/formats the number to hex directly.

Example :

Input:
26

Output:
"1a"

分析:

将给定整数转换为16进制,确保结果不包含多余的0,且不能使用库函数。可以每次取出最右边4位,若>=10,转换为相应的字母加入结果中,否则直接加入,直到给定的数字num为0或者已经循环了8次。

class Solution {
public:
    string toHex(int num) {
        string res = "";
        for(int i=0; num && i<8; i++)
        {
            int t = num & 0xf;
            if(t >= 10)
                res = char(t-10+'a') + res;
            else
                res = char('0'+t) + res;
            num >>= 4;         
        }
        return res.empty() ? "0" : res;    
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_41814716/article/details/85335468
今日推荐