lc-go/solutions/0/q67/solution.go
2025-12-28 12:54:21 +09:00

28 lines
527 B
Go

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