题目:
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.、
分析:
就是这么简单,二进制相加
代码:
string addBinary(string a, string b) {
string str = "";
int len1 = a.size();
int len2 = b.size();
int count = 0;
int i= len1 - 1;
int j =len2 - 1;
int c1, c2, sum;
while(i>= 0 || j >= 0)
{
if(i>=0 && j >= 0)
{
c1 = a[i] - '0';
c2 = b[j] - '0';
sum = c1 + c2 + count;
if(sum == 3)
{
count = 1;
str = '1' + str;
}
if(sum == 2)
{
count = 1;
str = "0" + str;
}
if(sum == 1)
{
count = 0;
str = "1" + str;
}
if(sum == 0)
{
count = 0;
str = "0" + str;
}
i --;
j --;
}
else
{
if(i>=0)
{
c1 = a[i] - '0';
sum = count + c1;
if(sum == 2)
{
count = 1;
str = "0" + str;
}
else
{
if(sum == 1) str = "1" + str;
if(sum == 0) str = "0" + str;
count = 0;
}
i--;
}
if(j >= 0)
{
c1 = b[j] - '0';
sum = count + c1;
if(sum == 2)
{
count = 1;
str = "0" + str;
}
else
{
if(sum == 1) str = "1" + str;
if(sum == 0) str = "0" + str;
count = 0;
}
j --;
}
}
}
if(count > 0)
{
str = "1" + str;
}
return str;
}
简短版:
引自:Discussion
class Solution
{
public:
string addBinary(string a, string b)
{
string s = "";
int c = 0, i = a.size() - 1, j = b.size() - 1;
while(i >= 0 || j >= 0 || c == 1)
{
c += i >= 0 ? a[i --] - '0' : 0;
c += j >= 0 ? b[j --] - '0' : 0;
s = char(c % 2 + '0') + s;
c /= 2;
}
return s;
}
};
注意:写代码一定要认真啊