func permutation(set: inout Set<String>, arr: inout [String], start: Int, end: Int) {
if start == end - 1 {
let str = arr.reduce("") { (result, elem) -> String in
result + elem
}
set.insert(str)
} else {
for i in start..<end {
arr.swapAt(i, start)
permutation(set: &set, arr: &arr, start: start + 1, end: end)
arr.swapAt(i, start)
}
}
}
var arry = ["1","2","3","4"]
var set: Set<String> = []
permutation(set: &set, arr: &arry, start: 0, end: arry.count)
print(set)
print(set.count)
思路:
將數(shù)組進行全遍歷(遞歸)晴及,每次遍歷中颁独,分別固定當前元素到第start位置奖磁,然后記錄每次排列組合