Add Binary
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) {
int la=a.length();
int lb=b.length();
if(la==0) return b;
if(lb==0) return a;
char cur='0';
string res,answer;
while(la&&lb)
{
if(a[la-1]=='1' && b[lb-1]=='1' && cur=='1'){res.push_back('1');cur='1';}
else if((a[la-1]=='1' && b[lb-1]=='1') ||(a[la-1]=='1' && cur=='1')||(b[lb-1]=='1' && cur=='1')){res.push_back('0');cur='1';}
else if(a[la-1]=='0' && b[lb-1]=='0' && cur=='0') {res.push_back('0');cur='0';}
else {res.push_back('1');cur='0';}
la--;
lb--;
}
while(la)
{
if(a[la-1]=='1' && cur=='1'){res.push_back('0');cur='1';}
else if(a[la-1]=='0' && cur=='0') {res.push_back('0');cur='0';}
else {res.push_back('1');cur='0';}
la--;
}
while(lb)
{
if(b[lb-1]=='1' && cur=='1'){res.push_back('0');cur='1';}
else if(b[lb-1]=='0' && cur=='0') {res.push_back('0');cur='0';}
else {res.push_back('1');cur='0';}
lb--;
}
if(cur=='1')
res.push_back('1');
for(int i=res.length()-1;i>=0;i--)
{
answer.push_back(res[i]);
}
return answer;
}
};