67. 二进制求和
67. 二进制求和
位运算, 这种题之前没写过
class Solution {
public:
string addBinary(string a, string b) {
//补齐
int abs = a.size()-b.size();
//b 前面补abs个0 或者补a
if(abs>0) b.insert(b.begin(),abs,'0');
else if(abs<0) a.insert(a.begin(),-abs,'0');
string res(a.size(),'0');
//运算
for(int i = a.size()-1;i>0;i--)
{
int stat = 0;
//看有几个'1'
stat = a[i]+b[i]+res[i]-'0'-'0'-'0';
//本位
res[i] = stat%2==0?'0':'1';
///看是否进位
if(stat>1) res[i-1] = '1';
}
//看第一位
int stat1 = 0;
stat1 = stat1+a[0]+b[0]+res[0]-'0'-'0'-'0';
res[0] = stat1%2==0?'0':'1';
if(stat1>1) res.insert(res.begin(),'1');
return res;
}
};