leetcode_405 数字转换为十六进制数

166 阅读1分钟

要求

给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。

注意:

  • 十六进制中所有字母(a-f)都必须是小写。
  • 十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符'0'来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。 
  • 给定的数确保在32位有符号整数范围内。
  • 不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。

示例 1:

输入:
26

输出:
"1a"

示例 2:

输入:
-1

输出:
"ffffffff"

核心代码

class Solution:
    def toHex(self, num: int) -> str:
        dict = {10:"a",11:"b",12:'c',13:'d',14:'e',15:'f'}
        hexRes = []
        if num < 0:
            num += 2 ** 32
        if num == 0:
            return "0"
        while num > 0:
            figure = num % 16
            num //= 16
            if figure >= 0 and figure <= 9:
                hexRes.append(str(figure))
            else:
                hexRes.append(dict[figure])
        hexRes = hexRes[::-1]
        return "".join(hexRes)

image.png

解题思路:这是一道简单题,我们就是循环对16进行除值取余,然后最终结果是从后往前的,需要进行一次反转,比较简单。