Add Strings

Add Strings

题目描述:

给定两个代表数字的字符串,要求返回这两个数字和的结果。

例子:

具体描述见LeetCode415

解题思路:

主要的思路是想将字符串逆序,从低位开始加起;用carry来记录进位;然后找到较长的字符串的长度用于遍历的停止条件;其中一个小技巧是如果另外一个字符串已到末尾我们就用0来代替。需要注意的地方还有我们跳出遍历后需要判断当前的进位是否存在,以及我们需要对结果逆序再返回。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public:
string addStrings(string num1, string num2) {
reverse(num1.begin(), num1.end());
reverse(num2.begin(), num2.end());
int carry = 0;
string res;
int length = num1.size() > num2.size() ? num1.size(): num2.size();
int index = 0;
while(index < length){
int n1 = index >= num1.size() ? 0 : num1[index] - '0';
int n2 = index >= num2.size() ? 0 : num2[index] - '0';
int sum = n1 + n2 + carry;
char tmp = '0' + sum % 10;
res += + tmp;
carry = sum / 10;
index++;
}
if (carry == 1) res += '1';
reverse(res.begin(), res.end());
return res;
}
};