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
}