黑马程序员技术交流社区

标题: 求思路 [打印本页]

作者: linzi    时间: 2016-6-18 14:28
标题: 求思路
(1)打印一个字符串的全字符组合情况,原始字符串中没有重复字符
(2)例如:原始字符串是"def", 打印得到下列所有组合情况:
"d" "e" "f" "de" "df" "ed" "ef" "fd" "fe" "def" "dfe" "edf" "efd" "fde" "fed"

TreeSet<String> ts = new TreeSet<>();
                ts.add("gd");
                ts.add("fs");
                ts.add("nk");
                ts.add("js");
                ts.add("tm");
               
                System.out.println(ts);
写完后没有思路了,请大神解决一下,3q






作者: danielchung6600    时间: 2016-6-18 23:45
我们set接口还没学
作者: qq6505520    时间: 2016-6-18 23:46
还没学到这块。。。。。
作者: 大笑哈哈    时间: 2016-6-19 13:31

1,将字符串通过tochararray转为字符数组
2,第一次遍历数组将元素存入容器     得到 d e f
3,第一次遍历中嵌套第二次遍历. 第二次遍历中可得到 dd de df ed ee ef fd fe ff 排除dd ee ff后存容器
4,第二次遍历中嵌套第三次遍历,排除重复后得到 "def" "dfe" "edf" "efd" "fde" "fed"   ,然后存容器

作者: 大笑哈哈    时间: 2016-6-19 13:43
还是来一份简单粗暴的源码吧.(没学集合可用字符串数组做,长度为15)       
char[] ch = "def".toCharArray();
                ArrayList<String> list = new ArrayList<>();
                for (int i = 0; i < ch.length; i++) {
                        list.add(ch[i] + "");
                        for (int j = 0; j < ch.length; j++) {
                                if(ch[i] == ch[j]) {
                                        continue;
                                } else {
                                        list.add(ch[i] + "" +  ch[j]);
                                        for (int j2 = 0; j2 < ch.length; j2++) {
                                                if(ch[j2] == ch[j] || ch[j2] == ch[i]) {
                                                        continue;
                                                } else {
                                                        list.add(ch[i] + ""  + ch[j] + ch[j2]);
                                                }
                                        }
                                }
                        }
                }
                System.out.println(list);
作者: 读书||养猪    时间: 2016-6-19 15:40
用arraylist 集合
先将字符串拆分成字符
然后用嵌套循环将字符拼接成字符串
接着就是将拼接好的字符串添加至集合中
最后打印




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2