给定两个二进制字符串,返回他们的和(用二进制表示)。
样例
a = 11
b = 1
返回 100
原题地址:http://www.lintcode.com/zh-cn/problem/add-binary/
class Solution {
public:
/**
* @param a a number
* @param b a number
* @return the result
*/
std::string addBinary(std::string& a, std::string& b) {
// Write your code here
int i, j;
i = a.size() - 1;
j = b.size() - 1;
int sum, c;
c = 0;
std::string result;
for ( ; i >= 0 && j >= 0; i--, j--) {
sum = (a[i] - '0') + (b[j] - '0') + c;
c = sum / 2;
sum = sum % 2;
result += sum + '0';
}
for ( ; i >=0; i--) {
sum = (a[i] - '0') + c;
c = sum / 2;
sum = sum % 2;
result += sum + '0';
}
for ( ; j >=0; j--) {
sum = (b[j] - '0') + c;
c = sum / 2;
sum = sum % 2;
result += sum + '0';
}
if (c != 0) {
result += c + '0';
}
char temp;
//反转result
for ( i = 0, j = result.size() - 1; j >=i ; j--, i++) {
temp = result[i];
result[i] = result[j];
result[j] = temp;
}
return result;
}
};