题目:
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) {
string s="";
//if(a=="")
//return b;
//if(b=="")
//return a;
//int len1=a.size()<b.size()?a.size():b.size();
int temp=0,i,j;
for(i=a.size()-1,j=b.size()-1;i>=0&&j>=0;i--,j--){
int sum=(a[i]-'0')+(b[j]-'0')+temp;
//if(sum>=2){
// temp=1;
// sum-=2;
//}
//else{
// temp=0;
//}
temp=sum/2;
sum%=2;
s=char(sum+'0')+s;
}
//string s1=a.size()<b.size()?b:a;
string s1=i<0?b:a;
//int len2=s1.size();
i=(i<0)?j:i;
//for(int i=len2-len1-1;i>=0;i--){
for(;i>=0;i--){
int sum=s1[i]-'0'+temp;
if(sum>=2){
temp=1;
sum-=2;
}
else{
temp=0;
}
s=char(sum+'0')+s;
}
if(temp>0){
s="1"+s;
}
return s;
}
};
运行时间4ms。
其实,注意的一点是进位,二进制加法进位只可能进“1”,还有一点要注意的是,a和b中是字符,要减‘0’转换成int形才能相加。