A permutation is a rearrangement of the elements in a list. A string/array of length **n has n! permutation**.

#### Input:

An array // [‘A’, ‘B’, ‘C’]

#### Output:

[‘A’, ‘B’, ‘C’] [‘A’, ‘C’, ‘B’], [‘B’, ‘A’, ‘C’], [‘B’, ‘C’, ‘A’], [‘C’, ‘A’, ‘B’], [‘C’, ‘B’, ‘A’]

OR

ABC, ACB, BAC, BCA, CAB, CBA

#### Logic :

Backtracking algorithm

- Iterate over the string one character at a time.
- Fix a character at the first position and the use swap to put every character at the first position
- Make recursive call to rest of the characters.
- Use swap to revert the string back to its original form for next iteration.

#### Time Complexity: O (n*n!)

In this example, we use arrays as an input as strings in javascript are immutable.

#### Solution :

Please write comments if you can make the above solution more clean, optimize or testable.