- 字符串相加
题目来自leetcode https://leetcode-cn.com/problems/add-strings/description/
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。
注意:
num1 和num2 的长度都小于 5100.
num1 和num2 都只包含数字 0-9.
num1 和num2 都不包含任何前导零。
你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。
思路:将字符串反转,对对齐位数利用满十进一的原则计算,最后将计算完的字符串再反转回来
时间复杂度: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//保存满十进一的结果
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())
}
}