-67. Add Binary My Submissions QuestionEditorial Solution
Total Accepted: 85904 Total Submissions: 309911 Difficulty: Easy
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
题意:二进制加法
class Solution {
public:
string addBinary(string a, string b) {
reverse(a.begin(),a.end()); //逆转
reverse(b.begin(),b.end());
int na = a.size(),nb = b.size();
int n = max(na,nb)+1,min_len=min(na,nb);
string res(n,'0');
for(int i=0;i<min_len;++i){
int tmp1 = a[i]+b[i]-'0'-'0';//a,b指定位相加和
int tmp2=res[i]-'0'+tmp1%2; //加之后加上本身位的值
res[i]=(tmp2)%2+'0'; //取余
int tmp=tmp1/2+tmp2/2; //计算下一位的总的进位和
res[i+1]=tmp%2+'0'; //下一位实际值
res[i+2]=tmp/2+'0'; //下一位是否产生金进位
}
if(na<nb)a=b;
for(int j=min_len;j<n-1;++j){ //较长者继续相加
int sum=res[j]-'0'+a[j]-'0';
res[j]=sum%2+'0';
res[j+1]=sum/2+'0';
}
if(res[n-1]=='0')res = res.substr(0,n-1);
reverse(res.begin(),res.end()); //为显示正常需要逆转
return res;
}
};