我的python代码有什么问题(添加二进制代码)?

时间:2015-05-20 21:09:20

标签: python

这是leetcode的一个非常简单的问题:

  

给定两个二进制字符串,返回它们的总和(也是二进制字符串)。

     

例如,a =" 11" b =" 1"返回" 100"。

这是我的代码,我认为它还可以

def addBinary(self, a, b):
    if len(a) < len(b):
        a, b = b, a

    rev, temp, sum = list(a[::-1]), 0, ""

    for i, j in enumerate(b[::-1]):
        temp = temp + int(rev[i]) + int(j)
        if temp == 0 or 1:
            rev[i] = str(temp)
            temp = 0
            x2 = temp
        elif temp == 2:
            rev[i] = "0"
            temp = 1

    if temp == 1:
        rev = rev + ["1"]

    for digit in rev[::-1]:
        sum += digit

    return sum

然而,当我跑步时,测试无法通过

  

输入:&#34; 1&#34;,&#34; 1&#34;

     

输出:&#34; 2&#34;

     

预期:&#34; 10&#34;

我根本不知道为什么并设置一个断点,发现虽然&#34; temp = temp + int(rev [i])+ int(j)&#34;,temp等于2,它没有进入条件的elif部分,因此返回&#34; 2&#34;作为最终结果。

有人可以告诉我为什么吗?我真的很感激。

2 个答案:

答案 0 :(得分:2)

你有一个错字

if temp == 0 or 1:

应改为:

if temp == 0 or temp == 1:

答案 1 :(得分:0)

一种简单而又更加抒情的做法是:

def add_binary(a, b):
    return bin(int(a) + int(b))[2:]

print add_binary("1", "1")
>>> 10