原题链接:https://leetcode-cn.com/problems/add-strings/
题目
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
提示:
num1 和num2 的长度都小于 5100
num1 和num2 都只包含数字 0-9
num1 和num2 都不包含任何前导零
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式
思路
长度有限,正整数,做字符串相加,不能转换整数。
那意思就是做字符的一个一个相加呗。
关于结果部分返回字符串那里,我是通过insert正向添加的,题解中是通过push_back反着加的,最后再反转一下字符串。都可以,但是push_back相对来说快一点,但是最后还有个反转的操作,就这样吧。
class Solution {
public:
string addStrings(string num1, string num2) {
int length1 = num1.length() - 1;
int length2 = num2.length() - 1;
//是否进位
bool add = false;
string sum = "";
//需要加个判断进位的条件,否则1和9不对
while(length1 >= 0 || length2 >= 0 || add) {
int number1 = length1 >= 0 ? num1[length1] - '0' : 0;
int number2 = length2 >= 0 ? num2[length2] - '0' : 0;
int tmp = add ? number1 + number2 + 1 : number1 + number2;
add = tmp >= 10 ? true : false;
string word = string(1, (tmp % 10) + '0');
sum.insert(0, word);
length1--;
length2--;
}
return sum;
}
};