ホームページ >ウェブフロントエンド >jsチュートリアル >jsの文字列の完全な配置をアルゴリズム的に解析する

jsの文字列の完全な配置をアルゴリズム的に解析する

不言
不言オリジナル
2018-07-20 10:58:302444ブラウズ

この記事では、js の文字列の完全な配置のアルゴリズム分析を紹介します。必要な友人は参考にしてください。

タイトルの説明

文字列を入力し、その文字列内の文字のすべての順列を辞書順に出力します。たとえば、文字列 abc を入力すると、文字 a、b、c で​​並べられる文字列 abc、acb、bac、bca、cab、cba がすべて出力されます。

分析

この質問は何もわかりません。オンラインで検索すると、次のようになります。

abcはabc、bac、cbaに分かれています(これは0とcbaの交換です) 0、0と1の交換、0と2の交換

最初のステップで得られたabcは、abc、acbに分けられます(これは、1と1の交換、1と2の交換です

得られたbac最初のステップで得られた cba は、bac、bca (これは 1 と 1 の交換、1 と 2 の交換です) に分けられます

最初のステップで得られた cba は、cba と cab (これは 1 と 1 の交換であり、 1と2の交換

コード実装

function Permutation(str)
{
    if(str === null || str === "")
        return [];
    var res = [];
    var index = 0;
    
    step(str.split(""), index, res);
    
    return res.sort();
}

function step(strArr, cur, res) {
    if(cur === strArr.length-1){
        var i = 0, str = "";
        while(i < strArr.length){
            str += strArr[i++];
        }
        res.push(str);
    }
    
    for(var i = cur;i < strArr.length;i++) {
        if(strArr[i] === strArr[cur] && i !== cur)
            continue;
        swap(strArr, i, cur);
        step(strArr, cur+1, res);
        swap(strArr, i, cur);
    }
}

function swap(arr, a, b) {
    var temp = arr[a];
    arr[a] = arr[b];
    arr[b] = temp;
}

関連する推奨事項:

Object.defineProperty(JavaScriptの))メソッド分析

vue-cliの単体テスト分析例

Reactの使い方: React コンポーネント内の状態管理

以上がjsの文字列の完全な配置をアルゴリズム的に解析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。