A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

分析以下需求,并用代码实现:
                (1)打印一个字符串的全字符组合情况,原始字符
        串中没有重复字符
                (2)例如:原始字符串是"def", 打印得到下列所有组合情况:               
                                "d" "e" "f" "de" "df" "ed" "ef" "fd"
                                "fe" "def" "dfe" "edf" "efd" "fde" "fed"*/
                /*Scanner scanner= new Scanner(System.in);
                System.out.println("请输入一个字符串(没有重复字符)");
                String line=scanner.nextLine();
                char[] cr=line.toCharArray();
               
                TreeSet<String> ts=new TreeSet<String>(new Comparator<String>() {
                        public int compare(String o1, String o2) {
                                int num=o1.length()-o2.length();
                                return num==0?o1.compareTo(o2):num;
                        };
                });
                for (int i = 0; i < cr.length; i++) {
                        ts.add(""+cr[i]);
                        for (int j = 0; j < cr.length; j++) {
                                if(cr[i]==cr[j]){
                                        continue;
                                }
                                ts.add(""+cr[i]+cr[j]);
                       
                        for (int k = 0; k < cr.length; k++) {
                                if(cr[i]==cr[j]||cr[i]==cr[k]||cr[j]==cr[k]){
                                        continue;
                                }
                                ts.add(""+cr[i]+cr[j]+cr[k]);
                                }
                        }
                       
                }
               
               
               
                System.out.println(ts);*/
               

3 个回复

正序浏览
有点枚举的感觉,虽然没学过枚举,总觉得有更简单的算法
回复 使用道具 举报
看不懂
回复 使用道具 举报
基础, 大神绕过.      
先别看 答案,  自己可以考虑做一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马