c++:
class Solution { public: string addBinary(string a, string b) { if(a == "") return b; if(b == "") return a; int i = a.size() - 1; int j = b.size() - 1; int c = 0;//进位 string temp; while(i>=0 || j >=0 ) { if(i>=0) c+= a[i--] - '0'; if(j>=0) c+=b[j--] - '0'; temp += to_string(c%2); c >>= 1; } reverse(temp.begin(),temp.end()); string ans = temp; return c > 0 ? '1'+ans : ans; } };
c:
#define MAX_SIZE 100 char *addBinary(char *a, char *b) { // 结果字符串 char *res = (char *) malloc(sizeof(char) * MAX_SIZE); memset(res, 0, sizeof(char) * MAX_SIZE); int i, j, tmp, k = 0, len = 0; for (i = strlen(a) - 1, j = strlen(b) - 1; i >= 0 || j >= 0; i--, j--) { // 对位相加 tmp = (i >= 0 ? a[i] - '0' : 0) + (j >= 0 ? b[j] - '0' : 0) + k; res[len++] = tmp % 2 + '0'; k = tmp / 2; } // 处理最高位的进位 while (k > 0) { res[len++] = k % 2+ '0'; k = k / 2; } res[len] = '