Add Binary
Problem Description
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 <= 104aandbconsist only of'0'or'1'characters.- Each string does not contain leading zeros except for the zero itself.
Solution (Go)
func addBinary(a string, b string) string {
maxLen := len(a)
if len(b) > maxLen {
maxLen = len(b)
a = fmt.Sprintf("%0*s", maxLen, a)
} else {
b = fmt.Sprintf("%0*s", maxLen, b)
}
c := make([]byte, maxLen+1)
carry := 0
for i := maxLen - 1; i >= 0; i-- {
if a[i] == '1' && b[i] == '1' {
if carry == 1 {
c[i+1] = '1'
} else {
c[i+1] = '0'
carry = 1
}
} else if a[i] == '0' && b[i] == '0' {
if carry == 1 {
c[i+1] = '1'
carry = 0
} else {
c[i+1] = '0'
}
} else {
if carry == 1 {
c[i+1] = '0'
} else {
c[i+1] = '1'
}
}
}
if carry == 1 {
c[0] = '1'
} else {
c = c[1:]
}
return string(c)
}