public class PermuteString {
// Swap characters in a char array
private static void swap(char[] arr, int i, int j) {
char temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
// Recursive function to generate permutations
public static void generatePermutation(char[] str, int l, int r) {
if (l == r) {
System.out.println(new String(str));
} else {
for (int i = l; i <= r; i++) {
swap(str, l, i);
generatePermutation(str, l + 1, r);
swap(str, l, i); // backtrack
}
}
}
public static void main(String[] args) {
String s = "ABC";
char[] chars = s.toCharArray();
generatePermutation(chars, 0, chars.length - 1);
}
}
/*
run:
ABC
ACB
BAC
BCA
CBA
CAB
*/