-
給定兩個二進制字符串,返回它們的和(也是一個二進制字符串)。 例如, a =“11” b =“1” 返回“100”。
- 直接給出代碼吧,就是簡單的位運算。從后往前逐位相加(編程int類型),carry記錄進位情況。最后在判斷最后一位情況。主要是考察十進制轉為二進制或者二進制轉為十進制
class Solution { public: string addBinary(string a, string b) { int len_a = a.size()-1; int len_b = b.size()-1; int carry = 0; string sum; while (len_a >= 0 || len_b >= 0){ int flag = 0; if (len_a >= 0){ flag += a[len_a] - '0'; len_a--; } else flag += 0; if (len_b >= 0){ flag += b[len_b] - '0'; len_b--; } else flag += 0; flag += carry; carry = flag/2; sum = static_cast<char>(flag%2+'0') + sum; } if (carry == 1) sum = '1' + sum; return sum; } };