Javascript文字列の全配列の組み合わせ方法が実現されます.

4848 ワード

Javascript文字列の全配列の組み合わせ方法が実現されます.
  • 一、目標:
  • 、考え方:
  • 、コード:
  • 一、目標:
    一つの文字列の中の文字を並べ直して新しい文字列を生成します.例えば、abcは全部で6種類の配列(abc、acb、bac、bca、cab、cba)があります.
    二、考え方:
  • 本の文章は全配列の状況だけを研究します.例えば、abc文字列です.3文字なら、全部の配列の組み合わせはnがあるべきです.ここのnは3種で、6種類のはずです.本論文は再帰的な方法で実現され、基本的な考え方は二重循環によって再帰的な主論理部分、外層循環str、内層循環n-1の場合の戻り行列preResult部分であり、アルゴリズム論理は下のフローチャートのようである.
  • は、第一に、再帰的にどのように生成されるかを考慮し、n=1、つまり、strの長さが1だけの場合、直接にstrだけの配列に戻る.n>1の場合は、nとn−1の方法を考慮して配列の関係を返します.n時に多く出る1文字が、n-1の戻り行列に追加されます.
  • Created with Rapha l 2.2.0スタートn>1?循環strは、グループの第一文字cをstrのcを取り除いて、残りの文字を元の組み合わせでnewStr(長さn-1)に再帰し、変数l循環lに値を与え、cとlの文字列をつなぎ合わせて、return[str]yes noを終了する.
    三、コード:
    // perm function
      var perm = function(s) {
        var result = [];
        if (s.length <= 1) {
          return [s];
        } else {
          for (var i = 0; i < s.length; i++) {
            var c = s[i];
            var newStr = s.slice(0, i) + s.slice(i + 1, s.length);
            var l = perm(newStr);
               
            for (var j = 0; j < l.length; j++) {
              var tmp = c + l[j];
              result.push(tmp);
            }
          }
        }
        return result;
      };  
    
    興味がある人は一緒に最適化を検討してもいいです.