题目:字符串相加

从后往前对两个字符串进行处理

addStrings()

 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