将短的字符串和长的字符串补齐,再相加。
string addBinary(string a, string b) {
int na = a.size();
int nb = b.size();
if (na > nb) {
for (int i = 0; i < na - nb; ++i) b.insert(b.begin(), '0');
}
else if (na < nb) {
for (int i = 0; i < nb - na; ++i) a.insert(a.begin(), '0');
}
int carry=0;
string res="";
for(int i=a.size()-1;i>=0;i--){
int sum=0;
if(carry==1) {
sum=a[i]-'0'+b[i]-'0'+carry;
}else
sum=a[i]-'0'+b[i]-'0';
carry=sum/2;
res=to_string(sum%2)+res;
}
if(carry) res="1"+res;
return res;
}
string addBinary(string a, string b) {
int carry=0;
int i=a.size()-1,j=b.size()-1;
string res="";
while(i>=0||j>=0){
int valA=i<0?0:a[i--]-'0';
int valB=j<0?0:b[j--]-'0';
int sum=0;
if(carry) sum=valA+valB+carry;
else sum=valA+valB;
carry=sum/2;
res=to_string(sum%2)+res;
}
if(carry) res="1"+res;
return res;
}
string addBinary(string a, string b) {
int carry=0;
int i=a.size()-1,j=b.size()-1;
string res="";
while(i>=0||j>=0){
int valA=i<0?0:a[i--]-'0';
int valB=j<0?0:b[j--]-'0';
int sum=0;
sum=valA+valB+carry;
carry=sum/2;
res=to_string(sum%2)+res;
}
return (carry==1)?"1"+res:res;
}