【刷题日记】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

好了,本次就到这里

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

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


相关文章
|
8月前
【一刷《剑指Offer》】面试题 12:打印 1 到最大的 n 位数
【一刷《剑指Offer》】面试题 12:打印 1 到最大的 n 位数
|
8月前
【一刷《剑指Offer》】面试题 10:二进制中 1 的个数
【一刷《剑指Offer》】面试题 10:二进制中 1 的个数
|
8月前
|
算法
[leetcode] 快乐数 E
[leetcode] 快乐数 E
|
算法 测试技术
LeetCode-1405 最长最快乐字符串
LeetCode-1405 最长最快乐字符串
|
8月前
leetcode-1405:最长快乐字符串
leetcode-1405:最长快乐字符串
51 0
|
8月前
|
存储 算法 Java
leetcode-202:快乐数
leetcode-202:快乐数
54 0
|
8月前
|
算法 Java C++
「LeetCode」202. 快乐数
「LeetCode」202. 快乐数
51 0
|
8月前
剑指Offer LeetCode 面试题17. 打印从1到最大的n位数
剑指Offer LeetCode 面试题17. 打印从1到最大的n位数
39 0
|
测试技术 C语言 C++
【浙江大学PAT真题练习乙级】1006 换个格式输出整数 (15分) 真题解析
【浙江大学PAT真题练习乙级】1006 换个格式输出整数 (15分) 真题解析
|
Python Cloud Native
【刷题日记】415. 字符串相加
本次刷题日记的第 48 篇,力扣题为:415. 字符串相加 ,简单