415. 字符串相加
难度简单302
给定两个字符串形式的非负整数
和
num1
num2
,计算它们的和。
提示:
和
num1
的长度都小于 5100
num2
和
num1
都只包含数字
num2
0-9
和
num1
都不包含任何前导零
num2
- 你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
这个和两数相加是一样道理的,在链表里面也出现过相同的题目。
模拟列竖式计算的过程,主要是一开始以n1 = 0, n2 = 0这样,然后对非空位数字将其赋值给相应的n1, n2,最后不要忘记对进位数进行处理。
我这里直接利用string类型里面加的功能,但注意是:res = num + res,不能是res += num,后面这样得到的结果整好的反着的。
另外,在对char 型的num[i] 计算,不能利用转int型,因此需要借助ASCII码,将num[i]-‘0’ 这样就可以得到int型的num[i]的数值啦
class Solution {
public:
string addStrings(string num1, string num2) {
int i = num1.length()-1, j = num2.length()-1;
int carry = 0;
string res = "";
while(i >= 0 || j >= 0){
int n1 = 0, n2 = 0;
if(i >= 0){
n1 = num1[i]-'0';
}
if(j >= 0){
n2 = num2[j]-'0';
}
int sum = n1 + n2 + carry;
res = to_string(sum % 10) + res;
carry = sum / 10;
i--;
j--;
}
if(carry > 0){
res = to_string(carry) + res;
}
return res;
}
};