题目:字符串相加
1string addStrings(string num1, string num2)
2{
3 // 进位数字
4 int carry = 0;
5 int n1 = num1.size() - 1, n2 = num2.size() - 1;
6
7 string res = "";
8 // 这里的 carry 是为了处理最高位相加之后的进位情况
9 while(0 <= n1 || 0 <= n2 || carry)
10 {
11 // 只有还有剩余数字时才取值
12 int num1_c = 0 <= n1 ? num1[n1] - '0' : 0;
13 int num2_c = 0 <= n2 ? num2[n2] - '0' : 0;
14 int sum = num1_c + num2_c + carry;
15 carry = (sum) / 10;
16 res.push_back((sum % 10) + '0');
17 n1--;n2--;
18 }
19 // 因为是从后往前处理所以最后需要进行一次翻转操作
20 reverse(res.begin(), res.end());
21 return res;
22}
原文:easy