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)