2022.8.24今天你刷题了吗?
题目:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。
分析:
给定两个数字字符串,你需要把它按照数字加起来得到一个字符串的返回值。
思路:利用小学数学思路,对位相加,利用双指针指向两个字符串,然后每个指针开始对位加,再利用一个cur表示进位关系,这里需要注意:
进位:cur/10
当前位:cur%10
通过这两个运算即可得到结果
解析:
双指针
class Solution {
public:
string addStrings(string num1, string num2) {
int i = num1.size() - 1;
int j = num2.size() - 1;
int cur = 0;
string ans;
while (i >= 0 || j >= 0||cur!=0)
{
if (i >= 0)
{
cur += num1[i] - '0';
i--;
}
if (j >= 0)
{
cur += num2[j] - '0';
j--;
}
//一个位置计算结束
ans+=to_string(cur % 10);
cur = cur / 10;//计算进位
}
reverse(ans.begin(),ans.end());
return ans;
}
};