fun permutations(str: String): List<String> {
if (str.isEmpty()) {
return listOf("")
}
val result = mutableListOf<String>()
for (i in str.indices) {
val firstChar = str[i]
val remainingChars = str.substring(0, i) + str.substring(i + 1)
val subPermutations = permutations(remainingChars)
for (subPermutation in subPermutations) {
result.add(firstChar + subPermutation)
}
}
return result
}
fun main() {
val str = "abc"
val allPermutations = permutations(str)
allPermutations.forEach { println(it) }
}
/*
run:
abc
acb
bac
bca
cab
cba
*/