与之前的版本的区别是,不需要转序。
代码:
char* addBinary(char* a, char* b) {
int n, m;
for (n=0; *a; a++, n++) ;
for (m=0; *b; b++, m++) ;
int length;
if(m>n)
{
length = m+2;
}else
{
length = n+2;
}
char *p = (char*)malloc(length);
p[--length] = '\0';
char *last = p;
int c = 0;
while (n || m ) {
int s = c;
if (n) {
s += *(--a)-'0';
--n;
}
if (m) {
s += *(--b)-'0';
--m;
}
last[--length] = (s&1)+'0';
c = s>>1;
}
last[length-1] = '1';
if(c == 0)
p = &last[1];
return p;
}