problème de permutation complète - itération Méthode d'interpolation

Description du sujet:

  S'il vous plaît préparer une méthode pour déterminer toutes les permutations d'une chaîne d'une chaîne donnée, la chaîne retourne toutes les permutations

   Par exemple: "ABC" en raison de l'arrangement de l'ensemble: ABC, ACB, BAC, BCA, CAB, ABC

  (Signification des questions: est-ce que tous les résultats pour chaque caractère d'une chaîne réarranger out)

méthodes de résolution de problèmes: itérative Méthode d'interpolation

  Principe : afin de prendre chaque caractère de la chaîne, et les résultats de la dernière inséré vide, lorsque le dernier caractère de prendre le temps de retourner le résultat.

  Réalisation d'idées:

   Remarque : Parce que la sortie est le résultat de l'arrangement, un tableau de mots ne peut pas déterminer la longueur du tableau, tenez compte des résultats d'un ensemble de type String à la sortie du magasin .

   La première étape : créer une collection qui permet de tenir tous les résultats classés.

   Deuxième étape : initialiser la collection, donne un premier jeu de caractères à ajouter str pour itérative sauvegardez l' interpolation

      La troisième étape : nouveau caractère du second caractère, sont insérés dans l' air pris dans un ensemble de précédemment généré.

   Quatrième étape : recréer une nouvelle collection, utilisé pour tenir un nouveau personnage dans différentes positions tous les résultats

   Cinquième étape : Trouver nouveau personnage

       Sixième étape : une collection de la visite, et sont insérés à partir d' un autre endroit de la nouvelle collection.

  Septième étape : liste mise à jour après l' insertion est terminée. Et retour.

  Code spécifique:

    // itération code Méthode d' interpolation: 
    publique  statique ArrayList <String> Permutation (STR String, int len) {   // STR: chaîne de roquet à aménager: un état récursive 
 // Etape 1: Création d' un jeu, pour organiser toutes les résultats de la commande après   
        la ArrayList <String> List = new new ArrayList <> ();
 // étape: initialiser la collection, str ajoutée au premier jeu de caractères, pour l' insertion de processus d'itération ultérieure vide (sinon, des traits d' union ? non, où insérer vide) 
        list.add (str.charAt (0) + "");           // Depuis str.charAt (0) est un caractère, il doit être converti en une chaîne
 // troisième étape: la première str 2 caractères pour les nouveaux caractères sont insérés dans l'espace précédemment généré chaque élément de la collection 
        pour ( int i = 1; I <len; I ++.) {                                          // note: I est l'indice de str
 @ quatrième étape: re créer une nouvelle collection, utilisé pour tenir un nouveau personnage dans une position entraîne différents
            ArrayList <String> = list_new new new ArrayList <> ();
 // Cinquième étape: Obtenez caractère nouveau 
            ombles c = str.charAt (i);
 // Sixième étape: une collection de la visite, et chaque nouvelle collection insertion de différents endroits 
            pour (S chaîne: List) {
                NewStr Chaîne = S + C;     // nouveau caractère est inséré à gauche, et ajouté à une collection 
                list_new.add (newStr);
                newStr = S + C;         // nouveau caractère est inséré dans le côté droit, et ajouté à une collection 
                list_new.add (newStr);
                 // inséré au milieu    
                pour ( int j = 1;. J <s.length (); J ++) { // inséré à partir du premier espace intermédiaire s 
                    newStr s.substring = (0, J) + C + s.substring (J);
                    list_new.add (newStr);
                }
            }
// Septième étape: Après avoir inséré complet, mis à jour la liste 
            List = list_new;
        }
        retour liste;
    }

 

Je suppose que tu aimes

Origine www.cnblogs.com/songchengyu/p/12593932.html
conseillé
Classement