import Foundation
func create_permutations(_ str: String) -> [String] {
var result = [String]()
var chars = Array(str)
permutation(&chars, 0, &result)
return result
}
private func permutation(_ chars: inout [Character], _ index: Int, _ result: inout [String]) {
if index == chars.count {
result.append(String(chars))
return
}
for i in index..<chars.count {
chars.swapAt(index, i)
permutation(&chars, index + 1, &result)
chars.swapAt(index, i) // backtrack
}
}
let result = create_permutations("abc")
print(result)
/*
run:
["abc", "acb", "bac", "bca", "cba", "cab"]
*/