难度:easy
题目描述
算法分析
对都有字符的进行相加,并且注意carry的值,对于不同长度的部分,与carry进行相加即可。
char转int,ch - ‘0’
int转char,int + ‘0’
代码实现
class Solution {
public:
string addBinary(string a, string b) {
int n1 = a.length(), n2 = b.length();
bool flag = 0;
if (n1 < n2) flag = 1;
int n = n1 < n2 ? n1:n2;
string result = "";
int carry = 0;
int add1 = 0, add2 = 0, sum = 0;
for (int i = n - 1; i >= 0; --i) {
add1 = a[abs(n1 - n) + i] - '0';
add2 = b[abs(n2 - n) + i] - '0';
sum = add1 + add2 + carry;
carry = sum / 2;
sum %= 2;
result += (sum + '0');
}
if (flag == 1) {
for (int i = n2 - n1 - 1; i >= 0; --i) {
sum = (b[i] - '0') + carry;
carry = sum / 2;
sum %= 2;
result += (sum + '0');
}
} else {
for (int i = n1 - n2 - 1; i >= 0; --i) {
sum = (a[i] - '0') + carry;
carry = sum / 2;
sum %= 2;
result += (sum + '0');
}
}
if (carry == 1) result += '1';
string ans = "";
for (int i = result.length()-1; i >= 0; --i)
ans += result[i];
return ans;
}
};