LeetCode-in-Go

67. Add Binary

Easy

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

import (
	"strings"
)

func addBinary(a string, b string) string {
	var sb strings.Builder
	i := len(a) - 1
	j := len(b) - 1
	carry := 0
	for i >= 0 || j >= 0 {
		sum := carry
		if i >= 0 {
			sum += int(a[i] - '0')
			i--
		}
		if j >= 0 {
			sum += int(b[j] - '0')
			j--
		}
		sb.WriteByte(byte(sum%2 + '0'))
		carry = sum / 2
	}
	if carry != 0 {
		sb.WriteByte(byte(carry + '0'))
	}
	result := []byte(sb.String())
	for i, j := 0, len(result)-1; i < j; i, j = i+1, j-1 {
		result[i], result[j] = result[j], result[i]
	}
	return string(result)
}