zoukankan      html  css  js  c++  java
  • 字符串的排列

    题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 

    思路。基础的dfs解法。。。

    private  char[] seqs;
        private Integer[] book;
        private HashSet<String> res=new HashSet<String>();
        public ArrayList<String> Permutation(String str) {
            ArrayList<String> arr=new ArrayList<String>();
            if(str==null||str.isEmpty()) return arr;
            char[] strs=str.toCharArray();
            seqs=new char[strs.length];
            book=new Integer[strs.length];
            for(int i=0;i<book.length;i++){
                book[i]=0;
            }
            dfs(strs,0);
            arr.addAll(res);
            Collections.sort(arr);
            return arr;
        }
        void dfs(char[] arrs,int step){
            if(arrs.length==step){
                String str="";
                for(int i=0;i<seqs.length;i++){
                    str+=seqs[i];
                }
                res.add(str);
                return;
            }
            for(int i=0;i<arrs.length;i++){
                if(book[i]==0){
                    seqs[step]=arrs[i];
                    book[i]=1;
                    dfs(arrs,step+1);
                    book[i]=0;
                }
            }
        }

    dfs。。。

  • 相关阅读:
    视图类
    基于前一天再补充
    多表与基表等概念
    模块与序列化
    vue简单实现购物车列表功能
    再顾vue
    再探vue
    iptables编辑
    python 字符串替换、正则查找替换
    Map的遍历
  • 原文地址:https://www.cnblogs.com/team42/p/6682776.html
Copyright © 2011-2022 走看看