极客算法

LeetCode-67.二进制求和(Add Binary)

2020-10-18

67. 二进制求和

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

输入为 非空 字符串且只包含数字 1 和 0。

示例 1:

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

示例 2:

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

  提示:

每个字符串仅由字符 '0' 或 '1' 组成。
1 <= a.length, b.length <= 10^4
字符串如果不是 "0" ,就都不含前导零。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/add-binary

Link:https://leetcode.com/problems/add-binary/

模拟加

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        
        carry = 0
        i = len(a) - 1
        j = len(b) - 1
        res = ''
        
        while i >= 0 or j >=0 or carry > 0:
            
            left = int(a[i]) if i >=0 else 0
            right = int(b[j]) if j >=0 else 0        
            val = left + right + carry
    
            res = str(val % 2) + res # str(val & 1) + res
            carry = val // 2 # val >> 1
            
            i -= 1
            j -= 1
            
        return res

题外话

### 为什么我要写这个公众号

我是2018年开始刷题的,当时LeetCode还没有过千,从同学那里得知FANNG面试比重非常大。

那个时候300来道题,在知乎上看到一篇问答《刷 LeetCode 吃力正常吗?》随手回答了一下,没想到点赞过千了。

学算法是非常反人类的事情,不只吃力这么简单,简直会怀疑自己根本不适合做计算机行业

300百虽然不多,但是回头看,还是挺有成就感的,甚至有些感动

这条路很艰难,每学会新的东西,都觉得这些只是基础

这里的分享,只是个人的标准,希望帮助到你

原稿博客: http://geemaple.github.io/

–End–


相关推荐

评论

内容: