每日一题 504.七进制数-Golang

174 阅读1分钟

504.七进制数

给定一个整数num,将其转化为7进制数,并以字符串形式输出。 难度:简单 示例1:

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

示例2:

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

提示:

  • 107<=num<=107-10^{7}<=num<=10^{7}

题解:

数学方式:
因为有负数,所以先取绝对值;
然后再将绝对值反复模7,并将结果加入结果中;
最后再根据num的正负判断是否需要添加负号。
func convertToBase7(num int) string {
    if num == 0 {
        return strconv.Itoa(0)
    }
    abs := absolute(num)
    ans := ""
    for abs != 0 {
        ans = strconv.Itoa(abs%7) + ans
        abs /= 7
    }
    if num < 0 {
        return "-" + ans
    }
    return ans
}

func absolute(x int) int {
    if x < 0 {
        return -x
    }
    return x
}
func convertToBase7(num int) string {
    if num == 0 {
        return strconv.Itoa(0)
    }
    abs := absolute(num)
    ans := []byte{}
    for abs != 0 {
        ans = append(ans,'0'+byte(abs%7))
        fmt.Println(ans)
        abs /= 7
    }
    n := len(ans)
    for i:=0; i<n/2; i++ {
        ans[i], ans[n-1-i] = ans[n-1-i], ans[i]
    }
    if num < 0 {
        return "-" + string(ans)
    }
    return string(ans)
}

func absolute(x int) int {
    if x < 0 {
        return -x
    }
    return x
}