【LeetCode】67. 二进制求和

这篇博客探讨了两种二进制加法的方法。第一种是通过逐位相加并考虑进位的方式,从最低位开始计算,最终得到结果。第二种方法是将二进制数转换为十进制进行运算,再转回二进制。这两种策略都有其适用场景,对于理解二进制运算和编程实现具有指导意义。
摘要由CSDN通过智能技术生成


解题思路:

1:将两个字符串从最后一位相加,逢二进一,每一个数字都加,不够的补0,

记录每次加过的数连接一起,最后倒过来输出

        result = ""
        carry = 0   #设置起始进位
        p = len(a)-1
        q = len(b)-1
        while p>=0 or q>=0 or carry!=0:
            numA = int(a[p]) if p>=0 else 0
            numB = int(b[q]) if q>=0 else 0
            sum = numA + numB + carry   #计算上下相加的和
            carry = 1 if sum>=2 else 0  #计算下一个进位
            sum = sum-2 if sum >=2 else sum
            result+=str(sum)                #每求一次和保存连接,结果是倒的
            p-=1
            q-=1
        return result[::-1]    #倒序输出

2:直接将二进制数转换为十进制计算,最后返回二进制

return bin(int(a,2)+int(b,2))[2:]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onlywishes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值