LeetCode67. 二进制求和Golang版
1. 问题描述
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
2. 思路
2.1. 思路1
每1位相加后,进位和结果逻辑如下
digit:= ai + bj + carry
carry = digit / 2
digit = digit % 2
3. 代码
3.1 思路1代码
func addBinary(a string, b string) string {
if len(a) == 0 {
return b
}
if len(b) == 0 {
return a
}
i := len(a) - 1
j := len(b) - 1
carry := 0
var res []byte
for i >= 0 && j >= 0 {
ai,_ := strconv.Atoi(string(a[i]))
bj,_ := strconv.Atoi(string(b[j]))
digit:= ai + bj + carry
carry = digit / 2
digit = digit % 2
res = append(res,byte(digit)+'0')
i--
j--
}
for i >= 0 {
ai,_ := strconv.Atoi(string(a[i]))
digit:= ai + carry
carry = digit / 2
digit = digit % 2
res = append(res,byte(digit)+'0')
i--
}
for j >= 0 {
bj,_ := strconv.Atoi(string(b[j]))
digit:= bj + carry
carry = digit / 2
digit = digit % 2
res = append(res,byte(digit)+'0')
j--
}
if carry > 0 {
res = append(res,byte(carry)+'0')
}
for k := 0; k < len(res)/2; k++ {
res[k],res[len(res)-1-k] = res[len(res)-1-k],res[k]
}
return string(res)
}