How to increment an integer represented as an integer array of digits by one in Swift

1 Answer

0 votes
import Foundation

func incrementByOne(_ digits: inout [Int]) -> [Int] {
    var carry = 1
    for i in stride(from: digits.count - 1, through: 0, by: -1) {
        digits[i] += carry
        if digits[i] == 10 {
            digits[i] = 0
            carry = 1
        } else {
            carry = 0
            break
        }
    }
    if carry == 1 {
        digits.insert(1, at: 0)
    }
    
    return digits
}

var digits = [9, 9, 9]

let incremented = incrementByOne(&digits)

print("Result: \(incremented.map { String($0) }.joined(separator: " "))")



/*
run:

Result: 1 0 0 0

*/

 



answered Jul 2 by avibootz
...