function swap(arr, i, j) {
const temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
function generatePermutation(arr, l, r) {
if (l === r) {
console.log(arr.join(''));
} else {
for (let i = l; i <= r; i++) {
swap(arr, l, i);
generatePermutation(arr, l + 1, r);
swap(arr, l, i); // backtrack
}
}
}
const s = 'ABC';
const chars = s.split('');
generatePermutation(chars, 0, chars.length - 1);
/*
run:
ABC
ACB
BAC
BCA
CBA
CAB
*/