来源:力扣(LeetCode)给定两个二进制字符串,返回他们的和(用二进制表示)。
输入为非空字符串且只包含数字 1 和 0。
示例 1:
输入: a = "11", b = "1"
输出: "100"
示例 2:
输入: a = "1010", b = "1011"
输出: "10101"
二进制进位,怎么想的就怎么写,直接上代码:
class Solution {
public:
string addBinary(string a, string b) {
string s(max(a.size(),b.size())+1,'0');
int al=a.size();
int bl=b.size();
int num=0;
for(int i=s.size();al||bl||num;num>>=1)
{
if(al)
num+=a[--al]-'0';
if(bl)
num+=b[--bl]-'0';
s[--i]=(num&1)+'0';
}
if(s[0]=='0')
s.erase(0,1);
return s;
}
};
如果有错,欢迎指正~
链接:https://leetcode-cn.com/problems/add-binary