1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// @Title: 二进制求和 (Add Binary)
// @Author: 15816537946@163.com
// @Date: 2022-03-16 21:45:42
// @Runtime: 0 ms
// @Memory: 2.4 MB
func addBinary(a string, b string) string {
    var ans string
    var carry int 
    lenA, lenB := len(a), len(b)
    n := lenA
    if n < lenB {
        n = lenB
    }

    for i := 0;i<n;i++ {
        if i < lenA {
            carry +=int(a[lenA-i-1]-'0')
        }
        if i < lenB {
            carry += int(b[lenB-i-1]-'0')
        }
        ans = strconv.Itoa(carry%2)+ans
        carry /=2
    }
    if carry > 0 {
        ans = "1"+ans
    }

    
    /*
    for lo, hi :=0, len(ans);lo < hi; lo, hi = lo+1, hi-1 {
        ans [lo], ans [hi] = ans[hi], ans[lo]
    }
    */
    return ans
}