Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
char* addBinary(char* a, char* b) {
int i,j,k,l,m,n,p;
char sum[10000],tmp;
m=strlen(a);
n=strlen(b);
k=0;p=0;
if(!a) return b;
if(!b) return a;
for(i=m-1,j=n-1;i>=0&&j>=0;i--,j--)
{
l=(a[i]-'0')+(b[j]-'0')+k;
sum[p++]='0'+l%2;
k=l/2;
}
if(i<0 && j>=0)
{
for(;j>=0;j--)
{
l=(b[j]-'0')+k;
sum[p++]='0'+l%2;
k=l/2;
}
}
if(i>=0 && j<0)
{
for(;i>=0;i--)
{
l=(a[i]-'0')+k;
sum[p++]='0'+l%2;
k=l/2;
}
}
if(i<0 && j<0)
{
l=k;
if(k==1) sum[p++]='0'+l;
}
sum[p]='\0';
for(i=0;i<p/2;i++)
{
tmp=sum[i];
sum[i]=sum[p-i-1];
sum[p-1-i]=tmp;
}
return sum;
}
二进制加法,注意进位。