import java.util.*;
public class Solution {
public ArrayList<String> Permutation(String str) {
ArrayList<String> list=new ArrayList();//结果集
boolean flag[]=new boolean[str.length()];//每个字符的标记,是否用过
dfs(list,str,"",flag);
Collections.sort(list);//排序
return list;
}
public void dfs(ArrayList<String> list,String s,String res,boolean array[]){
if(res.length()==s.length()){
if(!list.contains(res)){//判断是否重复
list.add(res);
}
return;
}
for(int i=0;i<s.length();i++){
if(!array[i]){
array[i]=true;
dfs(list,s,res+s.charAt(i),array);//递归
array[i]=false;//回溯
}
}
}}