您的位置:首页 > 其它

LeetCode_Add Binary

2014-09-19 15:10 120 查看
Given two binary strings, return their sum (also a binary string).

For example,

a =
"11"


b =
"1"


Return
"100"
.

这个题目比较简单,最初我还想是否需要考虑a,b中出现正负符号的问题,对于OJ的judge是不要求考虑的。

这样一来问题就变得简单了,保证两个数相加从低位到高位进行,并且注意数位对其就可以了,代码如下:

class Solution{

public:

string addBinary(string a, string b){

int aLen = a.size();

int bLen = b.size();

if(aLen == 0) return b;

if(bLen == 0) return a;

//处理共有对齐部分

string res;

int carry = 0;

while(aLen>0&&bLen>0){

int l = a[--aLen]-'0';

int r = b[--bLen]-'0';

if(carry+l+r==3){

res.insert(res.begin(),'1');

carry = 1;

}

else{

if(carry+l+r==2){

res.insert(res.begin(),'0');

carry = 1;

}

else{

if(carry+l+r==1){

res.insert(res.begin(),'1');

carry = 0;

}

else{

res.insert(res.begin(),'0');

carry = 0;

}

}

}

}

//处理a的剩余部分

while(aLen>0){

int temp = a[--aLen]-'0';

temp += carry;

if(temp == 0){

carry = 0;

res.insert(res.begin(),'0');

}else{

if(temp == 1){

carry = 0;

res.insert(res.begin(),'1');

}

else{

carry = 1;

res.insert(res.begin(),'0');

}

}

}

//处理b的剩余部分

while(bLen>0){

int temp = b[--bLen]-'0';

temp += carry;

if(temp == 0){

carry = 0;

res.insert(res.begin(),'0');

}else{

if(temp == 1){

carry = 0;

res.insert(res.begin(),'1');

}

else{

carry = 1;

res.insert(res.begin(),'0');

}

}

}

处理最后的一个进位

if(carry == 1){

res.insert(res.begin(),'1');

}

return res;

}

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