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) {
size_t len_a = a.length();
size_t len_b = b.length();
if(len_a == 0)
return b;
if(len_b == 0)
return a;
int i = len_a - 1;
int j = len_b - 1;
int increase = 0;
stack<int> result_stk;
while(i >= 0 && j >= 0)
{
int s = a[i] - ‘0‘ + b[j] - ‘0‘ + increase;
increase = s / 2;
int sum = s % 2;
result_stk.push(sum);
i--;
j--;
}
while(i >= 0)
{
int s = a[i] - ‘0‘ + increase;
increase = s / 2;
int sum = s % 2;
result_stk.push(sum);
i--;
}
while(j >= 0)
{
int s = b[j] - ‘0‘ + increase;
increase = s / 2;
int sum = s % 2;
result_stk.push(sum);
j--;
}
if(increase == 1)
result_stk.push(1);
string result;
while(!result_stk.empty())
{
result += result_stk.top() + ‘0‘;
result_stk.pop();
}
return result;
}
};原文地址:http://blog.csdn.net/u012118523/article/details/24648425