
一、题目描述

二、算法原理
思路:小学生加法运算
把逢十进一,改成逢二进一:

三、代码实现
cpp
class Solution {
public:
string addBinary(string a, string b) {
int cura = a.size() - 1, curb = b.size() - 1;
string ret;//最终的结果
int t = 0;
while(cura >= 0 || curb >= 0 || t != 0)
{
if(cura >= 0) t+= a[cura--] - '0';//转换成数字
if(curb >= 0) t += b[curb--] - '0';
ret += ((t % 2) + '0');//入余数,此时字符会慢慢的往后挪动,所以我们在最后的时候逆转字符串
t /= 2;//保留进位
}
reverse(ret.begin(),ret.end());//逆转字符串
return ret;
}
};