1、思路
同时遍历两个字符串,以较长的那个长度为遍历次数,短的那个不足的以0充当;遍历完成后,检查最高位是否产生进位。
2、实现代码(C++)
class Solution {
public:
string addStrings(string num1, string num2) {
int len1 = num1.length() - 1;
int len2 = num2.length() - 1;
int carry = 0;
string res = "";
while (len1 >= 0 || len2 >= 0) {
int n1 = len1 < 0 ? 0 : num1[len1--]-'0'; // 若num1先遍历完,以0填充
int n2 = len2 < 0 ? 0 : num2[len2--]-'0'; // 若num2先遍历完,以0填充
int n = n1 + n2 +carry;
res += n % 10 + '0';
carry = n / 10;
}
// 判断较长的那个字符串遍历完后,是否产生进位
if (carry == 1) {
res += 1 + '0';
}
reverse(res.begin(), res.end());
return res;
}
};