这是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;作为最终结果。
有人可以告诉我为什么吗?我真的很感激。
答案 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