소개
이 랩에서는 JavaScript 에서 문자열 순열 (string permutation) 의 개념을 탐구합니다. 재귀 (recursion) 를 사용하여 주어진 문자열의 모든 가능한 순열을 생성하며, 중복된 문자열도 포함합니다. 또한, 코드를 단순화하고 다양한 순열을 결합하기 위해 Array.prototype.map() 및 Array.prototype.reduce() 메서드의 사용법을 논의합니다.
This tutorial is from open-source community. Access the source code
이 랩에서는 JavaScript 에서 문자열 순열 (string permutation) 의 개념을 탐구합니다. 재귀 (recursion) 를 사용하여 주어진 문자열의 모든 가능한 순열을 생성하며, 중복된 문자열도 포함합니다. 또한, 코드를 단순화하고 다양한 순열을 결합하기 위해 Array.prototype.map() 및 Array.prototype.reduce() 메서드의 사용법을 논의합니다.
중복된 문자를 포함하는 문자열의 모든 순열을 생성하려면 다음 알고리즘을 사용하십시오.
node를 입력하여 코딩 연습을 시작합니다.Array.prototype.map()을 사용하여 문자를 각 부분 순열과 결합합니다.Array.prototype.reduce()를 사용하여 모든 순열을 하나의 배열로 결합합니다.String.prototype.length가 2 또는 1일 때입니다.다음은 알고리즘에 대한 JavaScript 코드입니다.
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
)
),
[]
);
};
다음 코드로 stringPermutations 함수를 테스트할 수 있습니다.
stringPermutations("abc"); // ['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
축하합니다! 문자열 순열 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 실력을 향상시킬 수 있습니다.