public class Test {
public static void main(String[] args) {
String input = "abc"; // 求a/b/c三个字符的全排列
Set<String> results = new LinkedHashSet<String>();
results.add("");
for (int i = 0; i < input.length(); i++) {
for (int j = 0; j < input.length(); j++) {
String current = input.substring(j, j + 1);
Set<String> newones = new LinkedHashSet<String>();
for (String s : results) {
if (s.indexOf(current) == -1) {
s += current;
}
newones.add(s);
}
results.addAll(newones);
}
}
results.remove("");
for (String s : results) {
System.out.println(s);
}
}
}