Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

JavaScriptで文字列の可能なすべての一意の順列を作成する


問題

文字列strを受け取るJavaScript関数を作成する必要があります。この関数は、入力文字列のすべての順列を作成し、重複がある場合はそれを削除する必要があります。つまり、入力からのすべての文字をすべての可能な順序でシャッフルする必要があります。

以下はコードです-

const str = 'aabb';
const permute = (str = '') => {
   if (!!str.length && str.length < 2 ){
      return str
   }
   const arr = [];
   for (let i = 0; i < str.length; i++){
      let char = str[i]
      if (str.indexOf(char) != i)
         continue
         let remainder = str.slice(0, i) + str.slice(i + 1, str.length)
         for (let permutation of permute(remainder)){
            arr.push(char + permutation)
         }
   }
   return arr
}
console.log(permute(str));

出力

以下はコンソール出力です-

[ 'aabb', 'abab', 'abba', 'baab', 'baba', 'bbaa' ]

  1. 反復を使用した文字列のすべての順列?

    このセクションでは、文字列のすべての順列を取得する方法を説明します。再帰的アプローチは非常に単純です。バックトラッキング手順を使用します。ただし、ここでは反復アプローチを使用します。 文字列ABCのすべての順列は、{ABC、ACB、BAC、BCA、CAB、CBA}のようなものです。より良いアイデアを得るためのアルゴリズムを見てみましょう。 アルゴリズム getAllPerm(str) begin    sort the characters of the string    while true, do       pr

  2. Pythonで特定の文字列のすべての可能な順列を見つける方法は?

    特定の文字列のすべての可能な順列を見つけるには、permutations(iterable [、r])と呼ばれる便利なメソッドを持つitertoolsモジュールを使用できます。このメソッドは、反復可能な要素の連続するrの長さの順列をタプルとして返します。 すべての順列を文字列として取得するには、関数呼び出しを繰り返し処理してタプルを結合する必要があります。例:  >>>from itertools import permutations >>>print [''.join(p) for p in permutations('