其他分享
首页 > 其他分享> > 【力扣笔记67】二进制求和

【力扣笔记67】二进制求和

作者:互联网

题目

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 10

示例 1:

输入: a = "11", b = "1"
输出: "100"

示例 2:

输入: a = "1010", b = "1011"
输出: "10101"

提示:

解法1(正确)

golang代码

func addBinary(a string, b string) string {
   ans := ""
   lengthA, lengthB := len(a), len(b)
   lengthA--
   lengthB--
   needAdd := false
   for lengthA >= 0 && lengthB >= 0 {
      if a[lengthA] == '1' && b[lengthB] == '1' {
         if needAdd {
            ans = "1" + ans
            needAdd = true
         } else {
            ans = "0" + ans
            needAdd = true
         }
      } else if a[lengthA] == '0' && b[lengthB] == '0' {
         if needAdd {
            ans = "1" + ans
            needAdd = false
         } else {
            ans = "0" + ans
            needAdd = false
         }
      } else {
         if needAdd {
            ans = "0" + ans
            needAdd = true
         } else {
            ans = "1" + ans
            needAdd = false
         }
      }
      lengthA--
      lengthB--
   }

   for lengthA >= 0 {
      if needAdd {
         if a[lengthA] == '0' {
            ans = "1" + ans
            needAdd = false
         } else {
            ans = "0" + ans
            needAdd = true
         }
      } else {
         ans = string(a[lengthA]) + ans
      }
      lengthA--
   }

   for lengthB >= 0 {
      if needAdd {
         if b[lengthB] == '0' {
            ans = "1" + ans
            needAdd = false
         } else {
            ans = "0" + ans
            needAdd = true
         }
      } else {
         ans = string(b[lengthB]) + ans
      }
      lengthB--
   }

   if needAdd {
      ans = "1" + ans
   }
   return ans
}

结果

执行结果:通过

执行用时:4 ms, 在所有 Go 提交中击败了27.20%的用户

内存消耗:2.6 MB, 在所有 Go 提交中击败了65.60%的用户

结果
官方题解适合研究一下
https://leetcode-cn.com/problems/add-binary/solution/er-jin-zhi-qiu-he-by-leetcode-solution/

标签:false,二进制,67,else,力扣,needAdd,ans,lengthB,lengthA
来源: https://blog.csdn.net/bestzy6/article/details/117481714