一、题目介绍
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/add-strings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、解题思路
本题考查大数加法,即按字节相加,相加的过程中注意进位操作。模拟竖式加法的过程。
三、解题代码
class Solution {
public:
string addStrings(string num1, string num2) {
int c = 0, r, p, q;
string res;
int l1 = num1.length()-1;
int l2 = num2.length()-1;
while(l1 >= 0 || l2 >= 0)
{
p = l1 < 0 ? 0 : num1[l1--] - '0';
q = l2 < 0 ? 0 : num2[l2--] - '0';
r = (p+q+c)%10; //当前位剩余值
c = (p+q+c)/10; //进位值
res = (char)(r + '0') + res;
}
return c == 0 ? res : (char)(c + '0') + res;
}
};
四、解题结果