先对齐,在相加,注意进位即可。
string addBinary(string a, string b) {
bool flag = false;
int aSize = a.size();
int bSize = b.size();
while(aSize>bSize){
b = '0' + b;
bSize++;
}
while(bSize>aSize){
a = '0' + a;
aSize++;
}
string result = "";
while(aSize){
aSize--;
if(flag){
if((a[aSize] - '0')^(b[aSize]-'0')){
result = '0' + result;
}
else if((a[aSize]-'0')&&(b[aSize]-'0')){
result = '1' + result;
}else{
result = '1' + result;
flag = false;
}
}else{
if((a[aSize]-'0')^(b[aSize]-'0'))
result = '1' + result;
else if((a[aSize]-'0')&&(b[aSize]-'0')){
flag = true;
result = '0' + result;
}else{
result = '0' + result;
}
}
}
if(flag) result = '1' + result;
return result;
}