object PermuteString {
def swap(str: String, i: Int, j: Int): String = {
val chars = str.toCharArray
val temp = chars(i)
chars(i) = chars(j)
chars(j) = temp
new String(chars)
}
def generatePermutation(str: String, l: Int, r: Int): Unit = {
if (l == r) {
println(str)
} else {
for (i <- l to r) {
val swapped = swap(str, l, i)
generatePermutation(swapped, l + 1, r)
}
}
}
def main(args: Array[String]): Unit = {
val s = "ABC"
generatePermutation(s, 0, s.length - 1)
}
}
/*
run:
ABC
ACB
BAC
BCA
CBA
CAB
*/