[LeetCode]405. 數字轉換爲十六進制數 ★

題目描述

給定一個整數,編寫一個算法將這個數轉換爲十六進制數。對於負整數,我們通常使用 補碼運算 方法。

注意:

  • 十六進制中所有字母(a-f)都必須是小寫。
  • 十六進制字符串中不能包含多餘的前導零。如果要轉化的數爲0,那麼以單個字符’0’來表示;對於其他情況,十六進制字符串中的第一個字符將不會是0字符。
  • 給定的數確保在32位有符號整數範圍內。
  • 不能使用任何由庫提供的將數字直接轉換或格式化爲十六進制的方法。

樣例

示例 1:

輸入:
26
輸出:
“1a”

示例 2:

輸入:
-1
輸出:
“ffffffff”

python解法

class Solution:
    def toHex(self, num: int) -> str:
        n = []
        if num == 0:
            return '0'
        if num < 0:
            num = (~abs(num) + 1)%(2**32)
        while num:
            v = num % 16
            n.append(chr(v+0x30)if v<10 else chr(v+87))
            num = num >> 4
        return ''.join(reversed(n))

執行用時 : 40ms
內存消耗 : 13.7MB

題後反思:

  1. 一個負數的補碼是這個負數取絕對值之後的原碼全部取反再加一得到的
  2. 我的這種方法0是需要單獨判斷的,否則返回就是空字符串

C語言解法

先不寫了,以後再補

執行用時 : ms
內存消耗 : MB

題後反思:

文中都是我個人的理解,如有錯誤的地方歡迎下方評論告訴我,我及時更正,大家共同進步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章