1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class Solution { public: string addBinary(string a, string b) { int m = a.size(), n = b.size(); int i = m - 1, j = n - 1; string ret; int c = 0; while(i >= 0 && j >= 0) { int sum = a[i--] - '0' + b[j--] - '0' + c; c = sum / 2; ret += sum % 2 + '0'; } while(c) { int sum; if(i >= 0) sum = a[i--] - '0' + c; else if(j >= 0) sum = b[j--] - '0' + c; else sum = c; c = sum / 2; ret += sum % 2 + '0'; } reverse(ret.begin(), ret.end()); if(i >= 0) ret = a.substr(0, i + 1) + ret; if(j >= 0) ret = b.substr(0, j + 1) + ret; return ret; } };
|