leecode-easy-addbinary

构造一个二进制加减函数。从后一位相加,一直加到最后,同时注意的几点。

1,进位也需要算,因此二进制函数是三个参数

2,最后要检验进位是否为0.当进位为1时,要考虑。

class Solution:
    def addBinary(self, a, b):
        """
        :type a: str
        :type b: str
        :rtype: str
        """
        s=[]      #每次得到结果存放
        z =0     #进位
        b1 = min(len(a),len(b))    #长度,待会循环会用
        for i in range(b1):   #b1--0 1 2 3 4   #加一个
            c = self.add(a[-1-i],b[-1-i],z)
            z = c[0]
            s.append(c[1])
        b2 = max(len(a),len(b))
        for i in range(b1,b2,1):   #b2 5 6 7 8   #剩下的
            if len(a)==b2:
                c = self.add(a[-i-1],0,z)
                z =c[0]
                s.append(c[1])
            elif len(b)==b2:
                c = self.add(0,b[-1-i],z)
                z = c[0]
                s.append(c[1])
            else:
                print('error1')
        if z ==1:                            #检查进位是否为1
            s.append(z)
        res =[]
        for i in range(len(s)):            #翻转
            res.append(str(s[-i-1]))
        
        result = ''.join(res)
        return result
                
            
    def add(self,x,y,z):         #二进制加法,返回【进位,数】
        'x,y,z int'
        c = int(x)+int(y)+int(z)
        if c==0:
            return [0,0]
        if c ==1:
            return [0,1]
        if c ==2:
            return [1,0]
        if c ==3:
            return [1,1]
        else:
            print('error2')
        
         
c = Solution()
a = "1"
b = '1'
z = c.addBinary(a,b)
print(z)


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值