private static void sortQueue(String input) {
char[] chars = input.toCharArray();
TreeSet<String> treeSet = new TreeSet<>();
sortQueue(treeSet, chars, 0, chars.length - 1);
for (String s : treeSet) {
System.out.print(s + " ");
}
}
private static void swap(char chars[], int i, int left) {
char temp = chars[i];
chars[i] = chars[left];
chars[left] = temp;
}
private static void sortQueue(TreeSet<String> treeSet, char[] chars, int left, int right) {
if (right == 0) {
treeSet.add("" + chars[0]);
return;
} else if (right == 1) {
treeSet.add(chars[0] + "" + chars[1]);
treeSet.add(chars[1] + "" + chars[0]);
return;
} else {
if (left == right) {
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < chars.length; i++) {
stringBuffer.append(chars[i]);
}
treeSet.add(stringBuffer.toString());
} else {
for (int i = left; i <= right; i++) {
swap(chars, i, left);
sortQueue(treeSet, chars, left + 1, right);
swap(chars, i, left);
}
}
}
}
递归解决全排列问题
最新推荐文章于 2024-07-27 17:56:15 发布