算法 字符串的排列组合

package ACM;

import java.util.ArrayList;
import java.util.TreeSet;

public class Solution13 {

    public  ArrayList<String> Permu(String str){
        ArrayList<String> result = new ArrayList<String>();

        if (str==null || str.length()==0){
            return result;
        }

        char[] chars = str.toCharArray();
        TreeSet<String> temp = new TreeSet<>();
        Permu(chars,0,temp);
        result.addAll(temp);
        return result;
    }
    public void Permu(char[]chars, int begin, TreeSet<String> result){
        if(chars==null || chars.length==0|| begin<0 ||begin>chars.length-1){return;}

        if(begin==chars.length-1){
            result.add(String.valueOf(chars));
        }else {
            for(int i = begin; i<chars.length-1; i++){
                swap(chars,begin,i);
                Permu(chars,begin+1,result);
                swap(chars,begin,i);
            }
        }

    }
 public void swap(char[] x, int a, int b){
         char t = x[a];
         x[a]=x[b];
         x[b]=t;
 }

  public static  void main(String[] args){
     String s = "adsgf";
      Solution13 s1 = new Solution13();
      System.out.println(s1.Permu(s));
  }


}

  

原文地址:https://www.cnblogs.com/toov5/p/8830848.html