leetcode--415--字符串相加

2020-07-14  本文已影响0人  minningl

题目:
给定两个字符串形式的非负整数 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;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读