跳过正文
  1. leetcode 题解/

67_二进制求和

·112 字·1 分钟

类型:字符串

    1. 二进制求和 💚 ⭐

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

    ❓ 给你两个字符串表示的二进制数,求和,同样以字符串返回。

    💡 模拟

    模拟竖式运算,从后往前逐位相加并进位。

    class Solution:
        def addBinary(self, a: str, b: str) -> str:
            if not a:
                return b
            if not b:
                return a
            c = ''
            i = len(a) - 1
            carry = 0
    
            if len(a) < len(b):
                a = '0' * (len(b) - len(a)) + a
            elif len(b) < len(a):
                b = '0' * (len(a) - len(b)) + b
    
            for i in range(len(a) - 1, -1, -1):
                val = int(a[i]) + int(b[i]) + carry
                c = str(val % 2) + c
                carry = 0 if val < 2 else 1
    
            if carry == 1:
                c = '1' + c
            return c

    时间复杂度:O(max(m, n)),空间复杂度:O(max(m, n))