📑 题目:67. 二进制求和

🚀 本题 LeetCode 传送门

题目大意

给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。

解题思路

  • 要求输出 2 个二进制数的和,结果也用二进制表示。
  • 简单题。按照二进制的加法规则做加法即可。

代码

  1. package leetcode
  2. import (
  3. ""strconv""
  4. ""strings""
  5. )
  6. func addBinary(a string, b string) string {
  7. if len(b) > len(a) {
  8. a, b = b, a
  9. }
  10. res := make([]string, len(a)+1)
  11. i, j, k, c := len(a)-1, len(b)-1, len(a), 0
  12. for i >= 0 && j >= 0 {
  13. ai, _ := strconv.Atoi(string(a[i]))
  14. bj, _ := strconv.Atoi(string(b[j]))
  15. res[k] = strconv.Itoa((ai + bj + c) % 2)
  16. c = (ai + bj + c) / 2
  17. i--
  18. j--
  19. k--
  20. }
  21. for i >= 0 {
  22. ai, _ := strconv.Atoi(string(a[i]))
  23. res[k] = strconv.Itoa((ai + c) % 2)
  24. c = (ai + c) / 2
  25. i--
  26. k--
  27. }
  28. if c > 0 {
  29. res[k] = strconv.Itoa(c)
  30. }
  31. return strings.Join(res, """")
  32. }

**