Учитывая строку, верните массив всех возможных перестановок.
Например, для заданного «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
)