给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
Golang解决:
package main import ( "fmt" ) func addBinary(a string, b string) string { length := len(b) if len(a) > len(b) { length = len(a) } r := make([]byte, length) var extra byte for i := 0; i < length; i++ { var dib byte ai, bi := len(a)-1-i, len(b)-1-i if ai >= 0 && bi >= 0 { dib = a[ai] - '0' + b[bi] - '0' } else if ai >= 0 { dib = a[ai] - '0' } else if bi >= 0 { dib = b[bi] - '0' } dib += extra if dib > 1 { extra = 1 } else { extra = 0 } r[length-1-i] = dib%2 + '0' } if extra == 1 { r = append([]byte{'1'}, r...) } return string(r) } func main() { for _, array := range [][2]string{{"11", "1"}, {"1010", "1011"}} { a := array[0] b := array[1] r := addBinary(a, b) fmt.Println(a, b, r) } } 标准输出:
11 1 100 1010 1011 10101 执行结果:(通过)
执行用时 :0 ms, 在所有 Go 提交中击败了100.00% 的用户 内存消耗 :2.2 MB, 在所有 Go 提交中击败了94.30%的用户 二进制加法、进位,在越界的边缘疯狂试探~
有疑问加站长微信联系(非本文作者)
