您的位置:首页 > 其它

【leetcode】Add Binary

2015-05-08 20:44 239 查看

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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: