二进制加法——模拟

102 阅读1分钟

image.png

代码:

Go string函数与strconv.Itoa函数的区别

strconv.Itoa 会将对应的整型数字转换成对应的字符串类型的数字
string 则是将整型数字转换为ASCII 值等于改数字的字符
例如 97 会转为 a 而不是字符串 “97”

func addBinary(a string, b string) string {
    ans := ""
    carry := 0
    lenA, lenB := len(a), len(b)
    n := max(lenA, lenB)

    for i := 0; i < n; i++ {
        if i < lenA {
            carry += int(a[lenA-i-1] - '0')
        }
        if i < lenB {
            carry += int(b[lenB-i-1] - '0')
        }
        ans = strconv.Itoa(carry%2) + ans   //这里不可以直接用string函数
        carry /= 2
    }
    if carry > 0 {
        ans = "1" + ans
    }
    return ans
}

func max(x, y int) int {
    if x > y {
        return x
    }
    return y
}