我是靠谱客的博主 无限茉莉,最近开发中收集的这篇文章主要介绍刷题日常之LeetCode504,进制转换问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

很多时候我发现,许多细节问题如果不加以整理很容易遗忘。在和群里的大佬沟通之后,我决定尝试养成在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)

得到的结果都是相反的。

以上。

最后

以上就是无限茉莉为你收集整理的刷题日常之LeetCode504,进制转换问题的全部内容,希望文章能够帮你解决刷题日常之LeetCode504,进制转换问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(88)

评论列表共有 0 条评论

立即
投稿
返回
顶部