67. Add Binary #
Problem #
Given two binary strings, return their sum (also a binary string).
The input strings are both non-empty and contains only characters 1 or 0.
Example 1:
Input: a = "11", b = "1"
Output: "100"
Example 2:
Input: a = "1010", b = "1011"
Output: "10101"
Problem Summary #
Given two binary strings, return their sum (represented in binary). The input consists of non-empty strings and contains only the digits 1 and 0.
Solution Approach #
- The requirement is to output the sum of 2 binary numbers, with the result also represented in binary.
- Easy problem. Just perform addition according to the rules of binary addition.
Code #
package leetcode
import (
"strconv"
"strings"
)
func addBinary(a string, b string) string {
if len(b) > len(a) {
a, b = b, a
}
res := make([]string, len(a)+1)
i, j, k, c := len(a)-1, len(b)-1, len(a), 0
for i >= 0 && j >= 0 {
ai, _ := strconv.Atoi(string(a[i]))
bj, _ := strconv.Atoi(string(b[j]))
res[k] = strconv.Itoa((ai + bj + c) % 2)
c = (ai + bj + c) / 2
i--
j--
k--
}
for i >= 0 {
ai, _ := strconv.Atoi(string(a[i]))
res[k] = strconv.Itoa((ai + c) % 2)
c = (ai + c) / 2
i--
k--
}
if c > 0 {
res[k] = strconv.Itoa(c)
}
return strings.Join(res, "")
}