Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
Subscribe to see which companies asked this question
题目:两个表示二进制字符串相加,返回字符串,用二进制表示和。
思想:字符串相加,高地位不好计算,首先反转字符串,然后各位相加,合理维护进位,最高位判断值,并补充。
class Solution {
public:
string addBinary(string a, string b)
{
string res;
const size_t n=a.size()>b.size()?a.size():b.size(); //获取最长的字符串长度
reverse(a.begin(),a.end());
reverse(b.begin(),b.end()); //反转便于运算
int car=0;
for(size_t i=0;i<n;i++){ //低位处理
const int ai=i<a.size()?a[i]-'0':0;
const int bi=i<b.size()?b[i]-'0':0;
const int val = (ai + bi + car)%2;
car = (ai + bi +car) / 2;
res.insert(res.begin(),val+'0'); //每一位都符合逻辑处理
}
if(car ==1)//最高位的维护
res.insert(res.begin(),'1');
return res;
}
};