Учитывая строку, верните массив всех возможных перестановок.

Например, для заданного «abc» функция должна вернуть [«abc», «acb», «bac», «bca», «cab», «cba»].

Эта проблема может быстро усложниться. В этом решении важно определить то, что мы можем использовать рекурсию. На каждом шаге мы фиксируем первую букву и переставляем остальные части строки.

Итак, findAllPermutations (‘abc’) =

‘A’ + findAllPermutations (‘bc’) +

‘B’ + findAllPermutations (‘ac’) +

‘C’ + findAllPermutations (‘ab’)

Чтобы добиться этого, мы будем использовать двойной цикл for. В первом цикле мы устанавливаем «фиксированный» первый символ, а также устанавливаем переменную для остальных символов.

Затем во втором цикле мы перебираем все перестановки remainingChars с помощью рекурсии. Наконец, мы помещаем эту перестановку в массив results и возвращаем results вне цикла. (Обратите внимание, как мы возвращаем str, если str.length === 1)