67. Add Binary(C语言改进版)

来源:互联网 发布:实验数据分析怎么写 编辑:程序博客网 时间:2024/06/05 05:56

与之前的版本的区别是,不需要转序。


代码:

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;}