首页 > 代码库 > Add Binary
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)
{
string c;
reverse(a);
reverse(b);
int size=a.length();
if(b.length()>size) size=b.length();
int add=0;
for(int i=0;i<size;i++)
{
int add1=0;
int add2=0;
if(i<a.length()) add1=a[i]-‘0‘;
if(i<b.length()) add2=b[i]-‘0‘;
c=c+char((add1+add2+add)%2+‘0‘);
add=(add1+add2+add)/2;
}
if(add==1) c=c+‘1‘;
reverse(c);
return c;
}
void reverse(string& s)
{
int l=0;
int r=s.length()-1;
while(l<r)
{
char tmp=s[l];
s[l]=s[r];
s[r]=tmp;
l++;r--;
}
}
};
public:
string addBinary(string a, string b)
{
string c;
reverse(a);
reverse(b);
int size=a.length();
if(b.length()>size) size=b.length();
int add=0;
for(int i=0;i<size;i++)
{
int add1=0;
int add2=0;
if(i<a.length()) add1=a[i]-‘0‘;
if(i<b.length()) add2=b[i]-‘0‘;
c=c+char((add1+add2+add)%2+‘0‘);
add=(add1+add2+add)/2;
}
if(add==1) c=c+‘1‘;
reverse(c);
return c;
}
void reverse(string& s)
{
int l=0;
int r=s.length()-1;
while(l<r)
{
char tmp=s[l];
s[l]=s[r];
s[r]=tmp;
l++;r--;
}
}
};
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。