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 <= 10^4
a and b consist only of '0' or '1' characters.
Each string does not contain leading zeros except for the zero itself.
Solution
Approach #0
func addBinary(a string, b string) (ans string) {
lenA, lenB := len(a), len(b)
c := max(lenA, lenB)
t := 0
for i := 0; i < c; i++ {
if i < lenA {
t += int(a[lenA-i-1] - '0')
}
if i < lenB {
t += int(b[lenB-i-1] - '0')
}
ans = strconv.Itoa(t%2) + ans
t /= 2
}
if t > 0 {
ans = "1" + ans
}
return
}
func max(a, b int) int {
if a > b {
return a
}
return b
}