はじめに
この実験では、JavaScript における文字列の順列の概念を探ります。再帰を使って、与えられた文字列のすべての可能な順列を生成し、重複を含めます。また、コードを簡略化し、異なる順列を結合するために Array.prototype.map() と Array.prototype.reduce() メソッドの使い方についても説明します。
This tutorial is from open-source community. Access the source code
この実験では、JavaScript における文字列の順列の概念を探ります。再帰を使って、与えられた文字列のすべての可能な順列を生成し、重複を含めます。また、コードを簡略化し、異なる順列を結合するために Array.prototype.map() と Array.prototype.reduce() メソッドの使い方についても説明します。
重複を含む文字列のすべての順列を生成するには、次のアルゴリズムを使用します。
node と入力します。Array.prototype.map() を使用して、その文字と各部分順列を結合します。Array.prototype.reduce() を使用して、すべての順列を 1 つの配列に結合します。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 でさらに実験を行って練習してください。