雖然經過一些面試問題看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