思路:很简单的问题!!!!!
结果我把字符加减给忘了!!!!写了一个多小时,每次关键时刻,网上就找不到靠谱的解释,只能慢慢从头捋一遍!
为了以后复习,插个眼!
字符类型加减在运算过程中是转换为整型的!!!!
cout<<'0'-----------------------输出:48
cout<<2+'0'--------------------输出:50
cout<<2+'0'-'0'-----------------输出:2【int型】
字符与数字作比较,比较的是ASCII码的值!!!
if(2+'0'-'0'<'2')cout<<"***"----------执行cout;
if(52+'0'-'0'<'2')cout<<"***"--------不执行cout;
代码:
class Solution {
public:
string result;
char num='0';
void dealfun(string &s)
{
reverse(s.begin(),s.end());
}
void addfun(string &a1,string &b1)
{
for(int i=a1.size()-1;i>=0;i--)
{
if (a1[i] - '0' + b1[i] - '0' + num - '0'+'0' < '2')
{
result += a1[i] - '0' + b1[i] - '0' + num - '0'+'0';
num = '0';
}
else if(a1[i] - '0' + b1[i] - '0' + num - '0'+'0' > '2')
{
result+='1';
num='1';
}
else
{
result+='0';
num='1';
}
}
if(result[a1.size()-1]=='0')result.pop_back();
dealfun(result);
}
string addBinary(string a, string b) {
int num=a.size()>=b.size()?a.size():b.size();
num=num+1;
string a1=a;string b1=b;
dealfun(a1);dealfun(b1);
for(int i=1;i<=num-a.size();i++)a1+='0';
for(int j=1;j<=num-b.size();j++)b1+='0';
dealfun(a1);dealfun(b1);
addfun(a1,b1);
return result;
}
};