http://www.glassdoor.com/Interview/Facebook-Interview-Questions-E40772.htmでいくつかのインタビューの質問を見ているときに、次の質問に出くわしました。
2 進数の 2 つの文字列表現 (例: "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)