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。。。

  • 相关阅读:
    ICS SIP Call移植
    ubuntu常用软件安装
    ubuntu开机自动设置屏幕亮度
    书摘《苹果是方的》
    dbml 添加时自动生成 Guid & DataTime
    English 中有趣的a和d
    asp.net 生成ul控件
    lambda c# 3.0
    0809 END Lakers
    linq c# 3.0
  • 原文地址:https://www.cnblogs.com/team42/p/6682776.html
Copyright © 2011-2022 走看看