LeetCode題解(0405):將數字轉換爲十六進制數(Python)

題目:原題鏈接(簡單)

解法 執行用時
Ans 1 (Python) 28ms (98.40%)
Ans 2 (Python) 40ms (66.33%)

LeetCode的Python執行用時隨緣,只要時間複雜度沒有明顯差異,執行用時一般都在同一個量級,僅作參考意義。

解法一(正負分別處理):

def toHex(self, num: int) -> str:
    if num >= 0:
        return str(hex(num))[2:]
    else:
        return str(hex(int("FFFFFFFF", base=16) + num + 1))[2:]

解法二:

def toHex(self, num: int) -> str:
    if num < 0:
        num = (pow(2, 32) - 1) - abs(num) + 1
    elif num == 0:
        return "0"
    ans = []
    while num > 0:
        d = str(num % 16)
        if d == "10":
            d = "a"
        elif d == "11":
            d = "b"
        elif d == "12":
            d = "c"
        elif d == "13":
            d = "d"
        elif d == "14":
            d = "e"
        elif d == "15":
            d = "f"
        ans.append(d)
        num //= 16
    ans.reverse()
    return "".join(ans)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章