Skip to content

Instantly share code, notes, and snippets.

@drosenstark
Created April 26, 2019 12:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save drosenstark/7454d39aa42b8ab132781e720cd80374 to your computer and use it in GitHub Desktop.
Save drosenstark/7454d39aa42b8ab132781e720cd80374 to your computer and use it in GitHub Desktop.
String permutations in a way that makes some sense
import Foundation
func permute(_ s: String) -> [String] {
var arr = Array(s)
var permutations = [[Character]]()
permute(&arr, 0, &permutations)
return permutations.map { String($0) }
}
func permute<T>(_ arr: inout [T], _ k: Int, _ result: inout [[T]]) {
for i in k ..< arr.count {
arr.swapAt(i, k)
permute(&arr, k + 1, &result)
arr.swapAt(k, i)
}
if k == arr.count - 1 { result.append(arr) }
}
print(permute("whoah"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment