Introdução
Neste laboratório, exploraremos o conceito de permutações de strings em JavaScript. Usaremos recursão para gerar todas as permutações possíveis de uma string dada, incluindo duplicatas. Também discutiremos o uso dos métodos Array.prototype.map() e Array.prototype.reduce() para simplificar o código e combinar as diferentes permutações.
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
nodepara 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.lengthigual a2ou1. - ⚠️ 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']
Resumo
Parabéns! Você concluiu o laboratório de Permutações de Strings. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.