【刷题日记】504. 七进制数

简介: 本次刷题日记的第 3 篇,力扣题为:【刷题日记】504. 七进制数 ,简单

【刷题日记】504. 七进制数

本次刷题日记的第 3 篇,力扣题为:【刷题日记】504. 七进制数简单

一、题目描述:

image.png

二、思路分析:

1、这道题考察了什么思想?你的思路是什么?

看了这题的描述和示例,是比较简单的,对于 7 进制的题目,和 2 进制3 进制 等等都是类似的思想和做法,我们可以得到如下几个信息

  • 要求将一个整数,转换成对应的 7 进制数,输出的是字符串
  • 如果整数是负数,得到的字符串第一个字符是 -
  • 使用辗转相除法来进行处理,对于 N 进制都是可以处理的

按照上述给出示例,我们可以使用辗转相除法来推演一下,我记得这个还是学的时候学的方法:

用 100 除以 7 ,商 14,余数为 2

用 14 除以 7 ,商 2 ,余数为 0

用 2 除以 7 , 商 0,余数为 2

然后 7 进制就是余数组合在一起  "202",这里是会会有误解,以为会是从上至下,还是至下而上

image.png

那我们可以换另外一个数字,比如说 102

计算方式还是和上面一直,这里就不在赘述了

image.png

最后 102 的 7进制数是 , 204 , 不是 402 , 通过图中,我们可以看到,余数的组合是至下而上的

2、尝试编码

那么,根据上述的图示和逻辑,那么咱们不难写出类似于这样的代码

对于编码的时候,我们需要考虑一下,num 为 0 的情况,和 num 为负数的情况

func convertToBase7(num int) string {
    // 处理 负数的情况
    res := ""
    yu := 0
    var tmp int
    if num < 0{
       tmp = 0 - num
       res = "-"
    }else{
        tmp = num
    }
    tmpStr := make([]string,0)
    for {
         yu = tmp % 7 // 取余
         tmp = tmp / 7  // 求商
         tmpStr = append(tmpStr,strconv.Itoa(yu))
         if tmp == 0 {
             break
         }   
    }
    for i:=len(tmpStr)-1;i>=0;i--{
        res += tmpStr[i]
    }
    return res
}

上面代码也非常简单

  • 第一步处理负数的情况
  • 第二步处理余数和商的关系,并把余数放到一个数组里面
  • 第三步反向遍历该数组,得到结果

四、总结:

上述这是一种常规且简单的做法,官方的方式是  倒推 + 迭代  ,可以看看如下官方代码,有没有另外的启发了,感兴趣的可以看看 leetcode-cn.com/problems/ba…

image.png

今天就到这里,学习所得,若有偏差,还请斧正

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

image.png

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~


相关文章
|
4月前
【一刷《剑指Offer》】面试题 12:打印 1 到最大的 n 位数
【一刷《剑指Offer》】面试题 12:打印 1 到最大的 n 位数
|
4月前
【一刷《剑指Offer》】面试题 10:二进制中 1 的个数
【一刷《剑指Offer》】面试题 10:二进制中 1 的个数
|
4月前
|
Java C++ Python
试题 基础练习 数的读法
试题 基础练习 数的读法
37 0
|
Python Cloud Native
【刷题日记】415. 字符串相加
本次刷题日记的第 48 篇,力扣题为:415. 字符串相加 ,简单
|
索引 Cloud Native
【刷题日记】954. 二倍数对数组
本次刷题日记的第 21 篇,力扣题为:954. 二倍数对数组 ,中等
|
机器学习/深度学习 Cloud Native
【刷题日记】67. 二进制求和
本次刷题日记的第 15 篇,力扣题为:67. 二进制求和 ,简单
|
Cloud Native
【刷题日记】693. 交替位二进制数
本次刷题日记的第 16 篇,力扣题为:67. 二进制求和 ,简单
|
Go C语言 Cloud Native
【刷题日记】762. 二进制表示中质数个计算置位
本次刷题日记的第 25 篇,力扣题为:762. 二进制表示中质数个计算置位 ,简单
|
安全 Cloud Native
【刷题日记】357. 统计各位数字都不同的数字个数
本次刷题日记的第 30 篇,力扣题为:357. 统计各位数字都不同的数字个数 ,中等
|
前端开发 C语言 Cloud Native
【刷题日记】2. 两数相加
本次刷题日记的第 6 篇,力扣题为:2. 两数相加 ,中等