题目如下:
解题思路:
长度补齐后进行计算。
代码如下:
class Solution {
public:
string addBinary(string a, string b) {
int a_size = a.size();
int b_size = b.size();
//长度补偿
while(a_size < b_size){
a = '0' + a;
a_size++;
}
while(b_size < a_size){
b = '0' + b;
b_size++;
}
//进位计算
int carry = 0;
int tmp_sum = 0;
for(int i = a_size - 1; i >= 0; i--){
tmp_sum = (a[i] - '0') + (b[i] - '0') + carry;
a[i] = tmp_sum % 2 + '0';
carry = tmp_sum > 1 ? 1 : 0;
}
if(carry)
a = '1' + a;
return a;
}
};