- 字符串相加
題目來自leetcode https://leetcode-cn.com/problems/add-strings/description/
給定兩個字符串形式的非負整數(shù) num1 和num2 何恶,計算它們的和更耻。
注意:
num1 和num2 的長度都小于 5100.
num1 和num2 都只包含數(shù)字 0-9.
num1 和num2 都不包含任何前導零板鬓。
你不能使用任何內(nèi)建 BigInteger 庫陷寝, 也不能直接將輸入的字符串轉(zhuǎn)換為整數(shù)形式悠汽。
思路:將字符串反轉(zhuǎn)葵擎,對對齊位數(shù)利用滿十進一的原則計算探橱,最后將計算完的字符串再反轉(zhuǎn)回來
時間復雜度:O(n) 资柔, 空間復雜度:O(1)
class Solution {
func addStrings(_ num1: String, _ num2: String) -> String {
let num1Arr = Array(num1.reversed())
let num2Arr = Array(num2.reversed())
var i = 0
var j = 0
var tmp = 0//保存滿十進一的結(jié)果
var sum = 0
var result = ""
while i < num1Arr.count || j < num2Arr.count || tmp != 0 {
sum = tmp
if i < num1Arr.count {
sum += Int(String(num1Arr[i]))!
i += 1
}
if j < num2Arr.count {
sum += Int(String(num2Arr[j]))!
j += 1
}
tmp = sum / 10
sum = sum % 10
result.append(String(sum))
}
return String(result.reversed())
}
}