2022-07-01

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 <= 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
}

Last updated