【剑指offer】504. 七进制数 [Go语言]

193 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情

题目

给定一个整数 num,将其转化为 7 进制,并以字符串形式输出。

示例

示例 1:

输入: num = 100
输出: "202"

示例 2:

输入: num = -7
输出: "-10"

题解

我们把这个进行转化就好,把num不断对7进行取余操作

AC Code

func convertToBase7(num int) string {
    var flag bool
(1)    if num < 0 {
        flag = true
        num = -num
    }
    s := ""
    if num == 0 {
        return "0"
    }    
    // num /= 7 每次循环的时候 都将num除以7  再把结果赋值给 num
(2)    for ;num > 0 ; num /= 7 {
(3)        lsb := num % 7
        // strconv.Itoa() 将数字强制性转化为字符串
(4)        s = strconv.Itoa(lsb) + s
    }
(5)    if flag{
        return "-"+s
    }
(6)    return s
}
  • (1) 如果这个num<0,那么就让这个变成正数在参与计算
  • (2) 不断进行num的循环,把这个num不断除以7
  • (3) 对7进行取余,并且将这个操作的结果记录
  • (4) 记录结果,顺便直接转化字符串进行转化,进行拼接
  • (5) 如果这个值是小于0的,就直接拼接上符号返回
  • (6) 如果不是小于零的就直接返回这个值

复杂度分析

时间复杂度:O(log∣num∣),其中 ∣num∣ 表示 num 的绝对值。循环中最多做 O(O(log∣num∣) 次除法。

空间复杂度:O(log∣num∣)。字符数组的长度最多为 O(log∣num∣)。可以直接修改字符串,空间复杂度为 O(1)

结果

image.png