分析:
1.补位,
for
2.对位计算,
3.进位更新,
endfor
4.判断是否溢出,
5.返回。
解答:
class Solution {
public:
string addBinary(string a, string b) {
int m = a.size();
int n = b.size();
while(m<n){
a ='0' + a;
m++;
}
while(m>n){
b ='0' + b;
n++;
}
int carry = 0;//初始化进位初值
for(int i=a.size()-1;i>=0;i--){
int sum = a[i]-'0'+b[i]-'0' + carry;
a[i] = sum%2 + '0';//当前位的数值
carry = sum/2;//进位更新
}
if(carry>0){
a = '1' + a;//最后一位判断结束,是否溢出
}
return a;
}
};