字符串的排列

思路:
首先求出低一个位置所有可能的字符,即把第一个字符和后面的字符交换,第一个字符确定后,再确定第二个位置,也是执行相关的交换操作。DFS

 public ArrayList<String> Permutation(String str) {
        ArrayList<String> res=new ArrayList<>();
        if(str==null||str.length()==0)
             return res;
        char[] ch=str.toCharArray();
        int len=str.length();
        dfs(ch,0,res);
        Collections.sort(res);
        return  res;
    }
     
    public void  dfs(char[] ch,int index,ArrayList<String> res){
        if(index==ch.length){
            if(!res.contains(String.valueOf(ch))){
                res.add(String.valueOf(ch));
            }
        }
        for(int i=index;i<ch.length;i++){
             char temp=ch[index];
             ch[index]=ch[i];
             ch[i]=temp;
             dfs(ch,index+1,res);
             
              temp=ch[index];
             ch[index]=ch[i];
             ch[i]=temp;
        }
        
    }

Paste_Image.png

Leetcode

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容