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