Leetcode刷題學習筆記 加法器設計

67. Add Binary(Easy)

給兩個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;
  1. 結果往字串前面疊加,因為越後面越是MSB。
  2. 最後還有一個carrier
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 刷題
Select a repo