又是一个很简单的题目,比较每个末尾字符串是0还是1,有没有进位
看来真是我太缺少挑战难题的勇气了!
class Solution {
public:
string addBinary(string a, string b) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int lena=a.length(),lenb=b.length();
if(lena==0)return b;
if(lenb==0)return a;
if(lena<lenb)
{
string tmp=a;
a=b;
b=tmp;
int tlen=lena;
lena=lenb;
lenb=tlen;
}
int add=0;
string r="";
int i=0;
if(lena>=lenb)
{
for(;i<lenb;i++)
{
if(add==0)
{
char ac=a[lena-1-i];
char bc=b[lenb-1-i];
if(ac=='1' && bc=='1')
{
add=1;
r='0'+r;
}
else if(ac=='1' || bc=='1')
{
r='1'+r;
}
else
{
r='0'+r;
}
}
else
{
char ac=a[lena-1-i];
char bc=b[lenb-1-i];
if(ac=='1' && bc=='1')
{
add=1;
r='1'+r;
}
else if(ac=='1' || bc=='1')
{
add=1;
r='0'+r;
}
else
{
add=0;
r='1'+r;
}
}
}
}
for(;i<lena;i++)
{
char ac=a[lena-1-i];
if(add==1 && ac=='1')
{
add=1;r='0'+r;
}
else if(add==1 || ac=='1')
{add=0;r='1'+r;}
else
{
r='0'+r;
}
}
if(add==1)
r='1'+r;
return r;
}
};