Add Binary
Total Accepted: 67578 Total Submissions: 261262 Difficulty: Easy
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
class Solution {
public:
void addBinary(string& str,string& a,string& b,int len1,int len2,bool carryBit)
{
if(len1==-1&&len2==-1){
if(carryBit){
str+='1';
return;
}else{
return ;
}
}
if(len1==-1){
if(!carryBit){
char ch=b[len2];
addBinary(str,a,b,len1,len2-1,false);
str+=ch;
}else{
if(b[len2]=='1'){
char ch='0';
addBinary(str,a,b,len1,len2-1,true);
str+=ch;
}else{
char ch='1';
addBinary(str,a,b,len1,len2-1,false);
str+=ch;
}
}
}else if(len2==-1){
if(!carryBit){
char ch=a[len1];
addBinary(str,a,b,len1-1,len2,false);
str+=ch;
}else{
if(a[len1]=='1'){
char ch='0';
addBinary(str,a,b,len1-1,len2,true);
str+=ch;
}else{
char ch='1';
addBinary(str,a,b,len1-1,len2,false);
str+=ch;
}
}
}else{
char ch=a[len1]+b[len2]-'0';
if(ch=='2'){
if(carryBit){
ch='1';
}else{
ch='0';
}
addBinary(str,a,b,len1-1,len2-1,true);
str+=ch;
}else if(ch=='1'){
if(carryBit){
ch='0';
addBinary(str,a,b,len1-1,len2-1,true);
str+=ch;
}else{
addBinary(str,a,b,len1-1,len2-1,false);
str+=ch;
}
}else{
if(carryBit){
ch='1';
}
addBinary(str,a,b,len1-1,len2-1,false);
str+=ch;
}
}
}
string addBinary(string a, string b) {
int len1=a.length()-1;
int len2=b.length()-1;
if(a==""){
return b;
}else if(b==""){
return a;
}
string str;
addBinary(str,a,b,len1,len2,false);
return str;
}
};