Add Binary
Given two binary strings, return their sum (also a binary string).
For example,
a ="11"
b ="1"
Return"100"
.
二进制加法,注意进位。和字符串访问时的末尾对齐。
class Solution { public: string addBinary(string a, string b) { if(a.empty()) return b; else if(b.empty()) return a; int carry = 0; string sum; int i = 0; int aLen = a.size() - 1; int bLen = b.size() - 1; while(aLen - i >= 0 && bLen - i >= 0){ int digit = carry + a[aLen - i] - '0' + b[bLen - i] - '0'; if(digit > 1){ carry = 1; digit -= 2; } else{ carry = 0; } sum.insert(sum.begin(), digit + '0'); i++; } //a is longer than b while(aLen - i >= 0){ int digit = carry + a[aLen - i] - '0'; if(digit > 1){ carry = 1; digit -= 2; } else{ carry = 0; } sum.insert(sum.begin(), digit + '0'); i++; } //b is longer than a while(bLen - i >= 0){ int digit = carry + b[bLen - i] - '0'; if(digit > 1){ carry = 1; digit -= 2; } else{ carry = 0; } sum.insert(sum.begin(), digit + '0'); i++; } if(carry == 1){ sum.insert(sum.begin(), '1'); carry = 0; } return sum; } };