文字列の完全な配置、特定のコンテンツは次のとおりです
文字列を入力し、文字列のすべての文字を辞書の順序で印刷します。たとえば、文字列ABCを入力し、文字A、B、cによって配置できるすべての文字列ABC、ACB、BCA、CAB、CBAを印刷します。結果のアルファベット順に出力してください。
再帰のアイデアを採用する:
完全に配置する必要がある文字列を2つの部分に分割します。
(1)文字列の最初の文字。
(2)最初のキャラクターの後のすべての文字。
最初の位置に表示される可能性のあるすべての文字を見つけます。最初のキャラクターと次のキャラクターを一度に交換します。
最初のキャラクターを修正し、最初のキャラクターの後にすべてのキャラクターの完全なアレンジメントを見つけます。最初の文字に続くすべての文字は、2つの部分に分割できます。
Javaコード:
java.util.arraylistをインポートします。 java.util.treesetをインポートします。 public class solution {public arraylist <string> permutation(string str){arraylist <string> res = new ArrayList <String>(); if(str == null || str.length()== 0){return res; } char [] chararray = str.tochararray(); //入力辞書の順に出力treeset <string> tempres = new Treeset <String>(); PermutationCore(Chararray、Tempres、0); Res.Addall(Tempres); RESを返します。 } private void permutationCore(char [] chararray、treeset <string> tempres、int loc){if(chararray == null || chararray.length == 0 || loc <0 || loc> chararray.length-1){return; } if(loc == chararray.length-1){tempres.add(string.valueof(chararray)); // recursive exit} else {for(int i = loc; i <chararray.length; i ++){swap(chararray、i、loc);スワップ(Chararray、i、loc); //以前に交換された文字をスワップバックして、最初の文字を他の文字と交換できるように}}}} private void swap(char [] chararray、int i、int j){char temp = chararray [i]; Chararray [i] = Chararray [j]; Chararray [j] = temp; }}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。