力扣(leetcode) 405. 数字转换为十六进制数

题目在这:https://leetcode-cn.com/problems/convert-a-number-to-hexadecimal/

思路分析:

首先判断所给的N是正数还是负数,若为负数,则使用补码运算变成正数再进行运算。

所给负数和 0xffffffff 进行与运算 (即补码运算),然后变为十进制正数。

正常处理正整数:
所给为空的直接返回0。
N除以16不断取余,然后加入数组。
建立一个字典,将10-15 对应成a-e。
循环遍历数组,对应字典变换10-15。
最后翻转数组。
其中要注意列表和字符串的变换。题目最后接受的为字符串类型。

完整代码

class Solution:
    def toHex(self, num: int) -> str:
        if num == 0:
            return str(0)
        n = num
        def A(n):
                res = []
                while n >0:
                    temp = n%16
                    res.append(temp)
                    n = n//16
                hash_map = {10:'a',11:'b',12:'c',13:'d',14:'e',15:'f'}

                res = res[::-1]
                for i in range(len(res)):
                    if res[i] in hash_map:
                        res[i] = hash_map[res[i]]
                ans = ''
                for i in res:
                    ans +=str(i)
                return  ans
        if n < 0:
            r = bin(n & 0xffffffff)

            r = int(r,2)
            return A(r)
        if n > 0:
            return A(n)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度不学习!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值