javaは文字列の完全な配置を実現します。


文字列の全配列、具体的な内容は以下の通りです。
文字列を入力し、文字列のすべての配列を辞書順に印刷します。例えば文字列a b cを入力すると、文字a,b,cによって並べられるすべての文字列abc,acb,bac,bca,cabおよびcbaがプリントされる。結果はアルファベット順に出力してください。
再帰的な考えを採用する:
全配列が必要な文字列を二つの部分に分けて見ます。
(1)文字列の最初の文字。
(2)最初の文字の後にあるすべての文字。
最初の位置に現れる可能性のあるすべての文字を求めます。最初の文字と後ろの文字を一回に交換します。
最初の文字を固定して、最初の文字の後ろのすべての文字を完全に並べます。最初の文字の後のすべての文字はまた二つの部分に分けられます。
javaコード: 

import java.util.ArrayList; 
import 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); 
    return 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));//      
    } 
    else 
    { 
      for(int i=loc;i<charArray.length;i++) 
      { 
        swap(charArray,i,loc);//               
        PermutationCore(charArray,tempRes,loc+1);//              
        swap(charArray,i,loc);//             ,                
      } 
        
    } 
  } 
  private void swap(char[] charArray,int i,int j) 
  { 
    char temp = charArray[i]; 
    charArray[i] = charArray[j]; 
    charArray[j] = temp; 
  } 
} 
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。