题目:
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
链接:https://leetcode-cn.com/problems/add-strings
思路:
1、对于两个整数,从尾到头进行遍历,将结果相加,大于10的话用进位进行存储,将相加的值存入返回列表中
Python代码:
class Solution(object):
def addStrings(self, num1, num2):
"""
:type num1: str
:type num2: str
:rtype: str
"""
size1 = len(num1)-1
size2 = len(num2)-1
carry = 0
ls = []
while (size1>=0 or size2>=0 or carry>0):
if (size1>=0):
carry += int(num1[size1])
size1 -= 1
if (size2>=0):
carry += int(num2[size2])
size2 -= 1
ls.append(str(carry%10))
carry /= 10
return str(''.join(ls[::-1]))
C++代码:
class Solution {
public:
string addStrings(string num1, string num2) {
int size1 = num1.size()-1;
int size2 = num2.size()-1;
int carry = 0;
string ret;
while(size1>=0 || size2>=0 || carry>0){
if(size1>=0){
carry += (num1[size1]-'0');
size1 -= 1;
}
if(size2>=0){
carry += (num2[size2]-'0');
size2 -= 1;
}
ret += to_string(carry%10);
carry /= 10;
}
reverse(ret.begin(), ret.end());
return ret;
}
};