题目描述
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
示例 1:
输入: a = “11”, b = “1”
输出: “100”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
C++
class Solution {
/*
先将a,b位补齐,再加法运算
*/
public:
string addBinary(string a, string b) {
string res;
if(a.size()>b.size())
{ int len=a.size()-b.size();
for(int i=0;i<len;i++)
b="0"+b;
}
if(a.size()<b.size())
{
int len=b.size()-a.size();
for(int i=0;i<len;i++)
a="0"+a;
}
int flag=0;
for(int i=a.size()-1;i>=0;i--){
int temp=a[i]-'0'+b[i]-'0'+flag;
if(temp>=2){
temp=temp%2;
res.insert(res.begin(),temp+'0');
flag=1;
}else {
res.insert(res.begin(),temp+'0');
flag=0;
}
}
if(flag){
res.insert(res.begin(),'1');
}
return res;
}
};