Skip to content

Instantly share code, notes, and snippets.

@atonamy
Created November 10, 2017 08:17
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 atonamy/9be29c0991c59edeaf8037d9e1daa41a to your computer and use it in GitHub Desktop.
Save atonamy/9be29c0991c59edeaf8037d9e1daa41a to your computer and use it in GitHub Desktop.
fun main(args : Array<String>) {
println("abc".generatePermutations())
}
fun StringBuilder.generatePermutations(start: Int = 0, finish: Int = length-1,
result: MutableSet<String> = HashSet()) : Set<String> {
if(start == finish)
result.add(String(this))
else
for(i in start .. finish) {
swap(start, i)
generatePermutations(start+1, finish, result)
swap(start, i)
}
return result
}
fun StringBuilder.swap(index1: Int, index2: Int) {
if(index1 == index2 || index1 < 0 || index2 < 0 || index1 >= length || index2 >= length)
return
val tmp = this[index1]
this[index1] = this[index2]
this[index2] = tmp
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment