Algoritmo de Permutações de Strings
Para gerar todas as permutações de uma string que contém duplicatas, use o seguinte algoritmo:
- Abra o Terminal/SSH e digite
node para começar a praticar a codificação.
- Use recursão para criar todas as permutações possíveis da string dada.
- Para cada letra na string dada, crie todas as permutações parciais para o restante de suas letras.
- Use
Array.prototype.map() para combinar a letra com cada permutação parcial.
- Use
Array.prototype.reduce() para combinar todas as permutações em um array.
- Os casos base são para
String.prototype.length igual a 2 ou 1.
- ⚠️ AVISO: O tempo de execução aumenta exponencialmente com cada caractere. Para strings com mais de 8 a 10 caracteres, o ambiente pode travar ao tentar resolver todas as diferentes combinações.
Aqui está o código JavaScript para o algoritmo:
const stringPermutations = (str) => {
if (str.length <= 2) return str.length === 2 ? [str, str[1] + str[0]] : [str];
return str
.split("")
.reduce(
(acc, letter, i) =>
acc.concat(
stringPermutations(str.slice(0, i) + str.slice(i + 1)).map(
(val) => letter + val
)
),
[]
);
};
Você pode testar a função stringPermutations com o seguinte código:
stringPermutations("abc"); // ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']