//大数加法
string AddString(string num1, string num2)
{
int end1 = num1.size() - 1, end2 = num2.size() - 1;
string ret; //存储两个字符串相加后的结果
int carry = 0; //进位(初始时进位设置为0)
while (end1 >= 0 || end2 >= 0)
{
//1、取出num1中本次待相加的数字
int a = 0;
if (end1 >= 0)
{
a = num1[end1] - '0';
end1--;
}
//2、取出num2中本次待相加的数字
int b = 0;
if (end2 >= 0)
{
b = num2[end2] - '0';
end2--;
}
//3、将这两个数字相加(注意加上进位)
int sum = a + b + carry;
//4、判断是否需要进位
if (sum > 9)
{
sum -= 10;
carry = 1; //需要进位,将carry设置为1
}
else
{
carry = 0; //不需要进位,将carry设置为0
}
ret += (sum + '0');
}
if (carry != 0) //判断是否还需进位(可能两个数的最高位相加后会进位)
ret += '1';
reverse(ret.begin(), ret.end()); //将ret字符串进行反转
return ret; //返回两个字符串相加后的结果
}