0067.二进制求和
方法一:模拟加法
时间复杂度 $O(max(len(a), len(b)))$,空间复杂度 $O(1)$。
func addBinary(a string, b string) string {
ans, pa, pb := "", len(a)-1, len(b)-1
for mod := 0; pa >= 0 || pb >= 0 || mod != 0; {
x, y := 0, 0
if pa >= 0 {
x, pa = int(a[pa]-'0'), pa-1
}
if pb >= 0 {
y, pb = int(b[pb]-'0'), pb-1
}
ans = fmt.Sprintf("%d", (x+y+mod)%2) + ans
mod = (x + y + mod) / 2
}
return ans
}