iOS常见算法3:字符串相加(Swift语言实现)

96
小呀小苹果呀
2018.05.16 09:39 字数 172
  1. 字符串相加
    题目来自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())
    }
}

日记本