黑马程序员技术交流社区
标题:
那个大神,帮我分析下这道题该怎么做
[打印本页]
作者:
wufengqiao
时间:
2016-4-29 23:04
标题:
那个大神,帮我分析下这道题该怎么做
分析以下需求,并用代码实现:
(1)打印一个字符串的全字符组合情况,原始字符串中没有重复字符
(2)例如:原始字符串是"def", 打印得到下列所有组合情况:
"d" "e" "f" "de" "df" "ed" "ef" "fd" "fe" "def" "dfe" "edf" "efd" "fde" "fed"
作者:
ufoheima
时间:
2016-5-1 00:37
我擦 -- 这个是我们今天的作业题 我 也 不会--
作者:
yaolv7
时间:
2016-5-1 12:10
每个字符往集合里存,再遍历集合里的字符对象,如果集合里的字符对象不包含当前遍历到的集合对象,就相加,然后再加到集合里,你可以先想一下,再看代码
private static void method(String string) {
LinkedHashSet<String> lhs = new LinkedHashSet<String>();
// 往集合里存一个空串用于第一次遍历集合
lhs.add("");
for (int i = 0; i < string.length(); i++) {
for (int j = 0; j < string.length(); j++) {
// 截取字符串中的一个字符
String srt = string.substring(j, j + 1);
// 创建一个集合
LinkedHashSet<String> tempLhs = new LinkedHashSet<String>();
// 遍历lhs集合
for (String s : lhs) {
// 若遍历当前对象里不包含当前srt字符串,则把srt添加到字符串中
if (! s.contains(srt)) {
s = s + srt;
}
// 把添加后的字符串存到tempLhs集合
tempLhs.add(s);
}
// 把tempLhs集合里的元素全部添加到lhs集合
lhs.addAll(tempLhs);
}
}
// 删除集合里的空串
lhs.remove("");
// 创建一个TreeSet集合,自定义一个比较器
TreeSet<String> ts = new TreeSet<String>(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
// 比较字符串长度为主要条件,字符串字典顺序为次要条件
int i = o1.length() - o2.length();
int j = o1.compareTo(o2);
return i == 0 ? j : i;
}
} );
// 添加lhs集合里的所有元素到ts集合,排序
ts.addAll(lhs);
for (String s : ts) {
System.out.println(s);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2