大数加法
string add(string a,string b)
{
a = a.substr(a.find_first_not_of('0'));
b = b.substr(b.find_first_not_of('0'));
int lenA = a.length();
int lenB = b.length();
int len = max(lenA,lenB)+10;
//翻转,以便从低位求和
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
string ans(len,'0'); //初始化答案为len长,全部字符为0
//把a拷贝到ans中
for(int i=0;i<lenA;i++){
ans[i] = a[i];
}
int tmp = 0;
for(int i=0;i<len;i++){
if(i<b.length())
tmp += (ans[i]-'0')+(b[i]-'0'); //假设为18
else
tmp += ans[i]-'0';
ans[i]=tmp%10+'0'; //8+'0'
tmp/=10;
}
reverse(ans.begin(),ans.end());
return ans.substr(ans.find_first_not_of('0'));
}
算法介绍:
参数:两个string型的字符串,代表传入的两个加数
返回值:string型的字符串
注意:不允许有小数点
例:
string a = "99999";
string b = "11111";
string ans = add(a,b);
cout<<ans; //输出111110