虽然经过一些面试问题看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)
''{:b}'.format(int(a,2)+ int(b,2))' – eumiro 2013-04-24 09:47:28
它们可以有多大?最简单的解决方案可能只是将它们转换为“int”,添加并重新恢复,但如果它们可以有数百个数字,则这将不起作用。 – 2013-04-24 09:48:15
@eumiro:这是作弊。 – 2013-04-24 09:48:24