给定两个二进制字符串,返回他们的和(用二进制表示)。
class Solution {
public:
string addBinary(string a, string b) {
a='0'+a;
b='0'+b;
// cout<<a<< " " <<b <<endl;
if(a.length()>b.length())
{
int tmp=a.length()-b.length();
while(tmp--)
b= '0'+b;
}
else if(a.length()<b.length())
{
int tmp=b.length()-a.length();
while(tmp--)
a='0' +a;
}
// cout<<a<< " " <<b <<endl;
bool flag=false;
int len=a.length();
string res;
for(int i=len-1;i>0;i--)
{
if(a[i] ^ b[i])
{
if(flag)
res='0'+res;
else
res = '1'+res;
}
else
{
if(a[i]=='0')
{
if(flag)
{
res= '1'+res;
flag=false;
}
else
res= '0'+res;
}
else
{
if(flag)
res= '1'+res;
else
{
res='0'+res;
flag=true;
}
}
}
}
if(flag) res='1'+res;
return res;
}
};
执行用时 :16 ms, 在所有 C++ 提交中击败了24.74%的用户
内存消耗 :9.3 MB, 在所有 C++ 提交中击败了6.03%的用户