二进制求和

原创 2016年06月01日 14:39:16

题目描述:给定两个二进制字符串,返回他们的和(用二进制表示)。

样例:a = 11;b = 1。返回 100


和之前链表求和(详见:点击打开链接)的逻辑一样,都是对于整数“序列化”的求和,主要考察的是对于序列(数组,字符串等)的操作的熟悉程度。

我们可以新建一个结果字符串——result,初始化为空,然后从后往前遍历两个给出的二进制字符串,对应位做二进制加法(当然要处理好进位的问题),然后依次将相加的结果添加到result中即可。

但是这个里面有个问题,就是两个二进制串的长度不一定相同,如果要对长度进行判断和处理的话,代码量显然太多。所以可以采取这样一种方法,如果说其中一个二进制字符串已经遍历完,我们再往下遍历时,就把这个二进制字符串的位看做0(其实已经没有了,但是看做0不会影响),相当于本来是11 + 1,现在变成了11 + 01,结果是不受影响的,但是写循环的时候则节省了代码量。

代码如下:

class Solution:
    # @param {string} a a number
    # @param {string} b a number
    # @return {string} the result
    def addBinary(self, a, b):
        index1, index2 = len(a) - 1, len(b) - 1
        result = ""
        # 进位的值,0表示不进位(进位0),1表示进位1
        add1 = 0
        while index1 >= 0 or index2 >= 0:
            t1 = int(a[index1]) if index1 >= 0 else 0
            t2 = int(b[index2]) if index2 >= 0 else 0
            temp = t1 + t2 + add1
            result = str(temp % 2) + result
            add1 = temp // 2
            index1 -= 1
            index2 -= 1
        if add1 == 1:
            result = "1" + result
        return result
        # Write your code here
注意一下,不要忘了18行对最后进位的处理。代码很简单,但是需要细心。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

链表求和

题目描述:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。 样例:给出两个链表 3...

LintCode Add Binary 二进制求和

LintCode Add Binary 二进制求和

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示) a = 11 b = 1 返回 100 #include #include using names...

二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。 样例 a = 11 b = 1 返回 100 import java.util.Scanner; import java.util....

二进制反码求和

本文转载自:http://blog.sina.com.cn/s/blog_438414c9010090vj.html IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算...

二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。 样例 a = 11 b = 1 返回 100 解题思路:巧用a[i] - '0' class Solution {...

算法学习(Java实现之字符串篇)····二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。 样例 a = 11 b = 1 返回 100 public class Solution { /** * @p...

lintcode 二进制求和 给定两个二进制字符串,返回他们的和(用二进制表示)。

Lintcode容易题 二进制求和 查看运行结果  15:00  Start 给定两个二进制字符串,返回他们的和(用二进制表示)。 您在真实的面试中是否遇到过这个题?  Yes ...

LeetCode之二进制字符串相加

刚开始刷leetcode,第一道题是给两个二进制的字符串,求这两个二进制相加以后的和,输出当然也是二进制的格式了。以下是题目:/** * Given two binary strings, retu...

LintCode-A + B 问题

给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 您在真实的面试中是否遇到过这个题?  Yes 样例 如果 a=1 并且 b=2,返回3 注意 ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)