大数加法

· 约 1 分钟阅读 · 次阅读 leetcode

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

 

示例 1:

输入:num1 = “11”, num2 = “123” 输出:“134” 示例 2:

输入:num1 = “456”, num2 = “77” 输出:“533” 示例 3:

输入:num1 = “0”, num2 = “0” 输出:“0”


大数加法

模拟的思路

class Solution:
    def addStrings(self, num1: str, num2: str) -> str:
        if not num1:
            return num2
        if not num2:
            return num1
        i = len(num1)-1
        j = len(num2)-1
        carry = 0
        result = ""
        while i >= 0 or j >= 0 or carry:
            if i >= 0:
                first = num1[i]
            else:
                first = 0
            if j >= 0:
                second = num2[j]
            else:
                second = 0
            # print('i, j', i, j)
            # print('first, second, carry', first, second, carry)
            tmp = int(first) + int(second) + carry
            result = str(tmp%10) + result
            carry = tmp // 10
            i = i - 1
            j = j - 1
        return result