(Python)LeetCode 67:二进制求和

题目:

思路:

给出的是a和b两个字符串,倒序计算字符串对应的值,判断留在本位的是什么,是否需要进位,如果进位那么下一位的计算除了字符串对应的数还包括要进的一位,留在本位的this可以通过取模计算,进位则只要this的计算结果大于1就是要进位,另外还要注意最后一位可能还要进位,所以在a和b字符串都计算完后还要再判断一次是否有进位。

代码:

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        a_index = len(a) - 1
        b_index = len(b) - 1
        new = ''  # 新的返回的字符串(运算过后的)
        k = 0  # 进位符
        if a_index >= b_index:
            while b_index >= 0:
                this = k + int(a[a_index]) + int(b[b_index])
                if this > 1:
                    k = 1
                else:
                    k = 0
                this = this%2
                new = str(this) + new
                b_index -= 1
                a_index -= 1
            while a_index >= 0:
                this = k + int(a[a_index])
                if this > 1:
                    k = 1
                else:
                    k = 0
                this = this % 2
                new = str(this) + new
                a_index -= 1
            if k == 1:
                new = str(k) + new
        else:
            while a_index >= 0:
                this = k + int(a[a_index]) + int(b[b_index])
                if this > 1:
                    k = 1
                else:
                    k = 0
                this = this % 2
                new = str(this) + new
                b_index -= 1
                a_index -= 1
            while b_index >= 0:
                this = k + int(b[b_index])
                if this > 1:
                    k = 1
                else:
                    k = 0
                this = this % 2
                new = str(this) + new
                b_index -= 1
            if k == 1:
                new = str(k) + new
        return new

结果:

关于LeetCode的解题方法欢迎大家一起讨论~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值