mirror of
https://github.com/ShusenTang/LeetCode.git
synced 2024-09-02 14:20:01 +00:00
Create 415. Add Strings.md
This commit is contained in:
parent
3e6fb6ee7f
commit
4284cf5718
30
415. Add Strings.md
Normal file
30
415. Add Strings.md
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
# [415. Add Strings](https://leetcode.com/problems/add-strings/description/)
|
||||||
|
# 思路
|
||||||
|
题目要求计算两个大数的和。
|
||||||
|
可以先定义一位的加法digit_add,然后再从后往前遍历num1和num2并不断调用digit_add即可完成大数相加。
|
||||||
|
# C++
|
||||||
|
```
|
||||||
|
class Solution {
|
||||||
|
private:
|
||||||
|
int digit_add(const int d1, const int d2, int &cin){
|
||||||
|
int sum = d1 + d2 + cin;
|
||||||
|
cin = sum / 10;
|
||||||
|
return sum % 10;
|
||||||
|
}
|
||||||
|
public:
|
||||||
|
string addStrings(string num1, string num2){
|
||||||
|
vector<char>res;
|
||||||
|
int cin = 0;
|
||||||
|
int i1 = num1.size() - 1, i2 = num2.size() - 1;
|
||||||
|
while(i1 >= 0 && i2 >= 0){
|
||||||
|
res.push_back('0' + digit_add(num1[i1--] - '0', num2[i2--] - '0', cin));
|
||||||
|
}
|
||||||
|
// 以下两个循环至多执行一个
|
||||||
|
while(i1 >= 0) res.push_back('0' + digit_add(num1[i1--] - '0', 0, cin));
|
||||||
|
while(i2 >= 0) res.push_back('0' + digit_add(num2[i2--] - '0', 0, cin));
|
||||||
|
if(cin != 0) res.push_back(cin + '0');
|
||||||
|
reverse(res.begin(), res.end());
|
||||||
|
return string(res.begin(), res.end());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user