題目:原題鏈接(簡單)
解法 | 執行用時 |
---|---|
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)