Easy
Given two binary strings a
and b
, return their sum as a binary string.
Example 1:
Input: a = “11”, b = “1”
Output: “100”
Example 2:
Input: a = “1010”, b = “1011”
Output: “10101”
Constraints:
1 <= a.length, b.length <= 104
a
and b
consist only of '0'
or '1'
characters.import (
"strings"
)
func addBinary(a string, b string) string {
var sb strings.Builder
i := len(a) - 1
j := len(b) - 1
carry := 0
for i >= 0 || j >= 0 {
sum := carry
if i >= 0 {
sum += int(a[i] - '0')
i--
}
if j >= 0 {
sum += int(b[j] - '0')
j--
}
sb.WriteByte(byte(sum%2 + '0'))
carry = sum / 2
}
if carry != 0 {
sb.WriteByte(byte(carry + '0'))
}
result := []byte(sb.String())
for i, j := 0, len(result)-1; i < j; i, j = i+1, j-1 {
result[i], result[j] = result[j], result[i]
}
return string(result)
}