mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-04 16:12:47 +08:00
39 lines
603 B
Go
39 lines
603 B
Go
package leetcode
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func addBinary(a string, b string) string {
|
|
if len(b) > len(a) {
|
|
a, b = b, a
|
|
}
|
|
|
|
res := make([]string, len(a)+1)
|
|
i, j, k, c := len(a)-1, len(b)-1, len(a), 0
|
|
for i >= 0 && j >= 0 {
|
|
ai, _ := strconv.Atoi(string(a[i]))
|
|
bj, _ := strconv.Atoi(string(b[j]))
|
|
res[k] = strconv.Itoa((ai + bj + c) % 2)
|
|
c = (ai + bj + c) / 2
|
|
i--
|
|
j--
|
|
k--
|
|
}
|
|
|
|
for i >= 0 {
|
|
ai, _ := strconv.Atoi(string(a[i]))
|
|
res[k] = strconv.Itoa((ai + c) % 2)
|
|
c = (ai + c) / 2
|
|
i--
|
|
k--
|
|
}
|
|
|
|
if c > 0 {
|
|
res[k] = strconv.Itoa(c)
|
|
}
|
|
|
|
return strings.Join(res, "")
|
|
}
|