您的位置:首页 > 其它

Add Binary

2015-11-25 22:35 274 查看

题目: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 lenA=a.length(),lenB=b.length();

if(lenA<lenB){
return addBinary(b,a);
}
int pa=lenA-1,pb=lenB-1;
int flag=0;
string res="";
string tem="";
while(pb>=0){
int sum=(int)(a[pa]-'0')+(int)(b[pb]-'0')+flag;
tem+=(sum%2==1)?'1':'0';// sum总和 的三种情况 0,1,2。只有当和为1,返回1,其余都为0
flag=sum/2;
pa--;
pb--;
}
while(pa>=0){
int sum=(int)(a[pa]-'0')+flag;
tem+=(sum%2==1)?'1':'0';// sum总和 的三种情况 0,1,2。只有当和为1,返回1,其余都为0
flag=sum/2;
pa--;
}

if(flag){
tem=tem+'1';
}
reverse(tem.begin(),tem.end());
return tem;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: