How to find the shortest identical consecutive subarray in an array with Swift

1 Answer

0 votes
import Foundation

func shortest_identical_consecutive_subarray(_ arr: [Int]) -> [Int] {
    if arr.isEmpty { return [] }

    var bestStart = 0
    var bestLen = arr.count

    var currentStart = 0
    var currentLen = 1

    for i in 1..<arr.count {
        if arr[i] == arr[i - 1] {
            currentLen += 1
        } else {
            if currentLen < bestLen {
                bestLen = currentLen
                bestStart = currentStart
            }
            currentStart = i
            currentLen = 1
        }
    }

    if currentLen < bestLen {
        bestLen = currentLen
        bestStart = currentStart
    }

    return Array(arr[bestStart ..< bestStart + bestLen])
}

// ------------------------------------------------------------
// MAIN PROGRAM
// ------------------------------------------------------------

let arr = [
    3,3,3,
    7,7,7,7,7,
    2,2,
    5,5,5,5,
    9,9,9,9,9,9
]

let resultArr = shortest_identical_consecutive_subarray(arr)

print("Array result:", terminator: " ")
for x in resultArr {
    print(x, terminator: " ")
}


/*
run:

Array result: 2 2 

*/

 



answered Feb 9 by avibootz

Related questions

...