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:

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