在浏览http://www.glassdoor.com/Interview/Facebook-Interview-Questions-E40772.htm上的一些面试问题时,我遇到了以下问题:
给定二进制数的两个字符串表示形式(例如“1001”、“10”),编写一个函数,将它们相加并以字符串形式返回结果(例如“1011”)。
这是我开始为这个问题编写的一些 Python 代码(现在还不完整),但我不太确定这是否是最好的(甚至是正确的)方法。我还考虑过首先在 C++ 中实现相同的功能,但放弃了考虑字符串操作中增加的复杂性。
def add_binary(a,b):
temp = ""
carry = false
//i from len(a) to 1 and j from len(b) to 1
bit_sum = add_bit ((a[i],b[j])
if (bit_sum == "10"):
temp.append("0")
carry = true
elif carry:
temp.append(add_bit("1",bit_sum))
else:
temp.append(bit_sum)
return temp.reverse()
def add_bit(b1, b2):
if b1 == '0':
return b2
elif b2 == '0':
return b1
elif (b1 = '1' and b2 =='1'):
return "10"
else return None
a = "1001"
b = "10"
add_binary(a,b)