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;//回溯 } } }}