* 以字符串的形式给出两个非负整数 num1 和 num2,返回 num1 和 num2 的和。
* num1 和 num2 的长度都小于5100。
* num1 和 num2 都只包含数字 0-9。
* num1 和 num2 都不包含任何前导零。
* 您不能使用任何内置的BigInteger库内的方法或直接将输入转换为整数。
* num1 和 num2 的长度都小于5100。
* num1 和 num2 都只包含数字 0-9。
* num1 和 num2 都不包含任何前导零。
* 您不能使用任何内置的BigInteger库内的方法或直接将输入转换为整数。
* eg:
* 给定 num1 = "123",num2 = "45"
* 返回 "168"
*给定num1=“123”,num2=“47”
*返回“170”
private string AddStrings(string num1, string num2)
{
string res = "";
int i = num1.Length - 1, j = num2.Length - 1;
int flag = 0; //进位数
int a, b; //分别表示num1,和num2 当前位的值
while (i >= 0 || j >= 0) //保证两个字符串所有数字都被相加
{
if (i >= 0)
a = num1[i--] - '0'; //减去0的ASC值得到的是当前位整数值
else
a = 0;
if (j >= 0)
b = num2[j--] - '0';
else
b = 0;
int sum = a + b + flag; //当前位数字之和
res = (char)(sum % 10 + '0') + res;
flag = sum / 10;
}
return flag == 1 ? "1" + res : res; //如果循环完成 flag==1 说明需要进位,
}