Maison >interface Web >js tutoriel >Analyse algorithmique de l'arrangement complet des chaînes en js

Analyse algorithmique de l'arrangement complet des chaînes en js

不言
不言original
2018-07-20 10:58:302410parcourir

Cet article vous présente l'analyse algorithmique de l'arrangement complet des chaînes en js. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Description du problème

Entrez une chaîne et imprimez toutes les permutations de caractères dans la chaîne dans l'ordre du dictionnaire. Par exemple, si la chaîne abc est saisie, toutes les chaînes abc, acb, bac, bca, cab et cba qui peuvent être organisées par les caractères a, b et c seront imprimées.

Analyse

Il n'y a rien à analyser. Je ne connais pas cette question. L'idée de chercher en ligne est probablement :

abc est divisé en abc, bac. , cba (c'est l'échange 0 et 0, l'échange 0 et 1, l'échange 0 et 2

L'abc obtenu à la première étape est divisé en abc et acb (c'est l'échange de 1 et 1, l'échange de 1 et 2

Le bac obtenu à la première étape se divise en bac et bca (c'est l'échange de 1 et 1, et l'échange de 1 et 2

Le cba obtenu en la première étape est divisée en cba et cab (c'est l'échange de 1 et 1, 1 et 2 échange

Mise en œuvre du code

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;
}

Recommandations associées :

Analyse de la méthode Object.defineProperty() en JavaScript

Exemple d'analyse de tests unitaires de vue-cli

Utilisation de React : gestion de l'état dans les composants React

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn