function swap(arr: string[], i: number, j: number): void {
const temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
function generatePermutation(arr: string[], l: number, r: number): void {
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: string = "ABC";
const chars: string[] = s.split('');
generatePermutation(chars, 0, chars.length - 1);
/*
run:
"ABC"
"ACB"
"BAC"
"BCA"
"CBA"
"CAB"
*/