两个二进制数相加
代码:
class Solution {
public:
vector<int> string2num(string s)
{
vector<int>num;
for(int i=0;i<s.length();i++)
{
if(s[i]=='0')
num.push_back(0);
else if(s[i]=='1')
num.push_back(1);
}
return num;
}
string num2string(vector<int> &num)
{
string str;
for(vector<int>::iterator it=num.begin();it!=num.end();it++)
{
str+=to_string(*it);
}
return str;
}
string addBinary(string a, string b) {
vector<int>anum,bnum,tempa,tempb;
tempa=string2num(a);
tempb=string2num(b);
if(tempa.size()>=tempb.size())
{
anum=tempa;
bnum=tempb;
}
else
{
anum=tempb;
bnum=tempa;
}
int i=anum.size()-1,j=bnum.size()-1;
int add=0,temp;
while(i>=0)
{
temp=0;
if(j>=0)
{
if(bnum[j]==1)
temp+=1;
j--;
}
if(add==1)
temp+=1;
if(temp>0)
{
temp+=anum[i];
anum[i]=temp%2;
add=temp/2;
}
i--;
}
if(add==1)
anum.insert(anum.begin(), 1);
return num2string(anum);
}
};