
代码 1 模拟:
- ans 答案字符串,可以直接加运算
- carry 储存当前值,carry 对 2 取余达到当前值, 除 2 得到其进位值
strconv.Itoa使 int 转 字符串,然后直接加 ans 即可
- 最后,carry 如果大于 0 ,则在最后再加上一个 "1"
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
carry /= 2
}
if carry > 0 {
ans = "1" + ans
}
return ans
}
func max(x, y int) int {
if x > y {
return x
}
return y
}