题目简单分析
字符二进制加法,可以参考10进制加法直接计算,从低位开始取出字符相加,记录进位。
每次将计算结果添加到字符中。
c++提供字符操作函数,字符串后面可以直接用+号连接其他字符或串, (串).size()可以获得串长,这个长度不包括末尾表示符。以及reverse(串)函数反转字符串,cout<<(串)可以直接打印串。
代码
string addBinary(string a, string b){
int Ai, Bj;
int i = a.size()-1, j = b.size()-1;
int carry = 0;
int sum;
string result="";
while (i >= 0 || j >= 0){
if (i >= 0)
Ai = (int)a[i--] - '0';
else
Ai = 0;
if (j >= 0)
Bj = (int)b[j--] - '0';
else
Bj = 0;
sum = Ai + Bj + carry;
if (sum >= 2)
{
carry = 1;
sum -= 2;
}
else
carry = 0;
result = result + (char)('0'+sum);
}
if (carry == 1)
result = result+'1';
reverse(result.begin(),result.end());
return result;
}