给定两个二进制字符串,返回它们的和(也是一个二进制字符串)。 例如, a =“11” b =“1” 返回“100”。
class Solution { public: string addBinary(string a, string b) { int len_a = a.size()-1; int len_b = b.size()-1; int carry = 0; string sum; while (len_a >= 0 || len_b >= 0){ int flag = 0; if (len_a >= 0){ flag += a[len_a] - ‘0‘; len_a--; } else flag += 0; if (len_b >= 0){ flag += b[len_b] - ‘0‘; len_b--; } else flag += 0; flag += carry; carry = flag/2; sum = static_cast<char>(flag%2+‘0‘) + sum; } if (carry == 1) sum = ‘1‘ + sum; return sum; } };
原文:http://www.cnblogs.com/Kobe10/p/6364198.html