题意
将两个二进制数字相加
思路
和十进制相加一样的思想,只是进位变化一下
代码
class Solution {
public:
string addBinary(string a, string b) {
return add(a, b);
}
private:
string add(string A, string B){
int lenA = A.length();
int lenB = B.length();
string ans = "";
lenA--;lenB--;
int pos = 0;
while(lenA >= 0 && lenB >= 0){
int sum = A[lenA--] + B[lenB--] - '0' - '0' + pos;
ans += sum % 2 + '0';
pos = sum / 2;
}
while(lenA >= 0){
int sum = A[lenA--]- '0' + pos;
ans += sum % 2 + '0';
pos = sum / 2;
}
while(lenB >= 0){
int sum = B[lenB--]- '0' + pos;
ans += sum % 2 + '0';
pos = sum / 2;
}
if(pos) ans += pos + '0';
reverse(ans.begin(), ans.end());
return ans;
}
};