# Leetcode刷題學習筆記 -- 加法器設計 ### [67. Add Binary(Easy)](https://leetcode.com/problems/add-binary/) 給兩個binary string,給出相加之後的結果string。 > 1. 因為數字由低位往高位相加,所以 i = n - 1, j = m - 1開始。 > 2. 因為兩個數字長度可能不一樣。所以每次必須判斷是否大於等於0 ``` int na = i >= 0 ? a[i--] - '0' : 0; int nb = j >= 0 ? b[j--] - '0' : 0; ``` > 3. 結果往字串前面疊加,因為越後面越是MSB。 > 4. 最後還有一個carrier ```cpp= string addBinary(string a, string b) { auto n = a.length(); auto m = b.length(); int i = n - 1, j = m - 1; int sum{0}, carrier{0}; string rtn; while(i >= 0 || j >= 0) { int na = i >= 0 ? a[i--] - '0' : 0; int nb = j >= 0 ? b[j--] - '0' : 0; sum = na + nb + carrier; carrier = sum / 2; sum %= 2; rtn = (char)(sum + '0') + rtn; } if(carrier) rtn = '1' + rtn; return rtn; } ``` ###### tags: `leetcode` `刷題`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up