思路
将所有字符分成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));
}
}
} 
京公网安备 11010502036488号