刷题日常之LeetCode504,进制转换问题

博主分享了自己作为LeetCode新手在刷题过程中的体验,详细介绍了如何解决一个进制转换的问题。通过对比不同的转换方法,如指数运算和余数转制法,讨论了效率和实现的简洁性。在代码实现中,博主遇到了Python列表操作的困惑,最终解决了将整型列表转化为字符串的问题,并理解了列表切片的功能。此外,博主还提醒注意列表操作的不变性。

很多时候我发现,许多细节问题如果不加以整理很容易遗忘。在和群里的大佬沟通之后,我决定尝试养成在csdn上写笔记的习惯。

目前我还是LeetCode新手,刷题量不到五十,每一道简单题就要写一个小时(思路十分钟+写代码五十分钟以上),在编码时经常出现很多语法错误。提交的成功率也比较低。

本题是进制转换,之前没有接触过这类问题,所以我原创的方法是先对数num求以7为低的log,得到的对数就是转制后的数的长度-1。

比如100转化成7进制,log7(100)=2,那么转制后是三位数。然后对3做循环,分别求每一位的具体数字。

但是这样有一个问题,那就是没求一位数都要尝试多次指数运算,很耗费时间。

有竞赛经验的同学知道余数转制法,比如这道7进制的题目,求一次%7得到的余数就是转制后的某一位的数字,然后对num/7,得到新的num,进入下一次循环,直到num=0。

class Solution:
    def convertToBase7(self, num: int) -> str:
        if num==0:
            return "0"
        nums = []
        flag = num<0
        num = abs(num)
        while num:
            nums.append(str(num%7))
            num //= 7
        if flag:
            nums.append("-")
        
        return ''.join(nums[::-1])

这是源代码,本来非常简单,但是因为我之前python用得少,很多语法不懂。比如python的list,也就是列表,很像java和c的数组,但是功能更加多样,也可以当做栈。

我在尝试用整型列表转化为字符串的时候,用''.join(nums)这个函数,但是报错。后来我先把整型转化为字符,在把字符列表转化为字符串,''.join(nums)就不报错了。

还有nums[::-1]这个函数,用来转制非常方便,但是要注意它并不改变nums列表本身。

我之前写成了

nums[::-1]
return ''.join(nums)

得到的结果都是相反的。

以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值