動機

就之前的add two number

Problem

Given two non-negative integers, num1 and num2 represented as string, return the sum of num1 and num2 as a string.

You must solve the problem without using any built-in library for handling large integers (such as BigInteger). You must also not convert the inputs to integers directly.

 

Example 1:

Input: num1 = "11", num2 = "123"Output: "134"

Example 2:

Input: num1 = "456", num2 = "77"Output: "533"

Example 3:

Input: num1 = "0", num2 = "0"Output: "0"

 

Constraints:

    t
  • 1 <= num1.length, num2.length <= 104
  • t
  • num1 and num2 consist of only digits.
  • t
  • num1 and num2 don't have any leading zeros except for the zero itself.

Sol

class Solution:
    def addStrings(self, num1: str, num2: str) -> str:
        a = num1[::-1]
        b = num2[::-1]
        
        def add(a,b,carry=0):
            if not a and not b:
                return "" if carry == 0 else str(carry)
            elif not a:
                return add(b,a,carry)
            elif not b:
                if carry == 1:
                    return add(a,b+str(carry),0)
                else:
                    return a
            else:
                tmp = int(a[0])+int(b[0])+carry
                return str(tmp%10)+add(a[1:],b[1:],tmp//10)
        return add(a,b)[::-1]