string add(string a,string b)
{
string ret="";
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
int lena=a.size();
int lenb=b.size();
int i=0,j=0;
int c=0;
while(i<lena&&j<lenb)
{
int now=a[i]-'0'+b[i]-'0'+c;
c=now/10;
now=now%10;
char charnow=now+'0';
ret+=charnow;
i++;
j++;
}
while(i<lena)
{
int now=a[i]-'0'+c;
c=now/10;
now=now%10;
char charnow=now+'0';
ret+=charnow;
i++;
}
while(j<lena)
{
int now=b[j]-'0'+c;
c=now/10;
now=now%10;
char charnow=now+'0';
ret+=charnow;
j++;
}
if(c>0)
{
ret+="1";
}
reverse(ret.begin(),ret.end());
return ret;
}
上来先将两个字符串都翻转,表示从低位开始加一直加到最高位,c为进位。
两个字符串有长有短,短的到头了长的可以继续加。
最后进位如果大于0,就让ret再加个"1"。
翻转以后再返回。