黑马程序员技术交流社区
标题:
求思路
[打印本页]
作者:
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