leetcodeday65–二进制求和

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

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

示例 1:

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

示例 2:

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

提示:

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

代码:

# @lc app=leetcode.cn id=67 lang=python3
#
# [67] 二进制求和
#

# @lc code=start
from calendar import c


class Solution:
    def addBinary(self,a: str, b: str) -> str:
        def Binary(i,j,carry=0):
            i=int(i)
            j=int(j)
            carry=int(carry)
            carrys=(i+j+carry)//2
            n=(i+j+carry)%2
            return str(n),str(carrys)
        lena=len(a)
        lenb=len(b)
        rev=""
        if lena<lenb:
            c=a
            a=b
            b=c
        carry=0
        lens=max(lena,lenb)
        b="0"*abs(lena-lenb)+b
        for i in range(lens-1,-1,-1):
            #print(a[i],b[i],carry)
            n,carry=Binary(a[i],b[i],carry)
            rev=n+rev
        if carry=="1":
             rev=carry+rev
        return rev

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注