lc-go/solutions/0/q67/solution.go

29 lines
610 B
Go

// Package q67 implements a solution for https://leetcode.com/problems/add-binary/
package q67
func toDigit(byt byte) uint8 { return byt - '0' }
func toByte(digit uint8) byte { return '0' + digit }
func addBinary(a string, b string) string {
lenA, lenB := len(a), len(b)
ret := make([]byte, max(lenA, lenB)+1)
var carry uint8
for i := range ret {
d := carry
if i < lenA {
d += toDigit(a[lenA-i-1])
}
if i < lenB {
d += toDigit(b[lenB-i-1])
}
carry = d / 2
ret[len(ret)-i-1] = toByte(d % 2)
}
if ret[0] != '1' {
return string(ret[1:])
}
return string(ret)
}
var _ = addBinary