力扣3

给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 1 和 0

char* addBinary(char* a, char* b) {
int i = strlen(a);
int j = strlen(b);

int len = i > j?i:j;
char *res = (char*)malloc((sizeof(char)*(len + 2)));
res[++len] = 0;

char carry = '0';
char pa,pb;
while(len >= 1 || carry == '1'){
pa = i >0?a[--i]:'0';
pb = j >0?b[--j]:'0';
res[--len] = pa ^ pb ^carry; //当前位
carry = (pa & carry ) | (pb & carry ) | (pa & pb); //进位

}
return res;
}

posted on 2019-04-14 09:46  xiegangqingnian  阅读(152)  评论(0编辑  收藏  举报

导航