415. Add Strings

Easy

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:

  • 1 <= num1.length, num2.length <= 104

  • num1 and num2 consist of only digits.

  • num1 and num2 don't have any leading zeros except for the zero itself.

解題

首先將兩個數字字串變成一樣的位數,避免遍歷字串的時候還要處理長度不一的問題。接下來進行加法、byte、int 與 string 之間的轉換即可。

Runtime: 3 ms, faster than 77.07%

Memory Usage: 7 MB, less than 57.33%

func addStrings(num1 string, num2 string) string {
    ans := ""
    
    if len(num1)>len(num2) { num2 = appendZero(num2, len(num1)-len(num2)) }
    if len(num1)<len(num2) { num1 = appendZero(num1, len(num2)-len(num1)) }
    
    carry := 0
    
    for i:= len(num1)-1; i>=0; i-- {
        num := int (num1[i]-'0') + int(num2[i]-'0') + carry
        carry = num / 10
        ans =  string( num % 10 + '0' ) + ans
    }
    
    if carry == 1 { ans = "1" + ans }
    
    return ans
    
}

func appendZero(s string, n int) string {
    for n>0 {
        s = "0" + s
        n--
    }
    
    return s
}

Last updated