Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string addBinary(string a, string b) {
if (a.empty()||b.empty())
return a.empty()?b:a;
int idx_a = a.size()-1,idx_b = b.size()-1;
int length = max(idx_a,idx_b)+1;
string Result;
int add =0;
for (;idx_a>=0&&idx_b>=0;--idx_a,--idx_b)
{
int num = a[idx_a]-'0'+b[idx_b]-'0'+add;
add = num/2;
num %= 2;
Result = static_cast<char>(num+'0')+Result;
}
while (idx_a>=0)
{
int num = a[idx_a]-'0'+add;
add = num/2;
num %= 2;
Result = static_cast<char>(num+'0')+Result;
idx_a--;
}
while (idx_b>=0)
{
int num = b[idx_b]-'0'+add;
add = num/2;
num %= 2;
Result = static_cast<char>(num+'0')+Result;
idx_b--;
}
if (add>0)
Result = static_cast<char>(add+'0')+Result;
return Result;
}