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