思路
将所有字符分成s1 ,s2
已经使用的掉的字符是s1,从s2挑一个与s1组成序列,循环递归,o(n!)
ArrayList<string> arr=new ArrayList<>(set);结构保存在set集合中去重,再构成数组,
Collections.sort(arr);//集合容器的排序,字符串默认字典序排序</string>
代码
import java.util.*; public class Solution { Set<String> set=new HashSet<>(); public ArrayList<String> Permutation(String str) { help("",str); ArrayList<String> arr=new ArrayList<>(set); Collections.sort(arr); return arr; } public void help(String s1,String s2){ if(s2.length()<=1){ if(s1.length()+s2.length()>0){set.add(s1+s2);} return; } for(int i=0;i<s2.length();i++){ help(s1+s2.charAt(i),s2.substring(0,i)+s2.substring(i+1)); } } }