/**
* 输出给定字符串所有排列
* 例如:给定ab,输出ab,ba
*
* @param str
*/
private static void permutation(String str) {
if (str == null || str.length() < 2) return;
// 转为数组
char[] arr = str.toCharArray();
// 创建list存储排列
List<String> list = new ArrayList<>();
permutation(arr, 0, list);
System.out.println(list);
}
/**
* 进行排列
*
* @param arr
* @param start 起始索引
* @param list
*/
private static void permutation(char[] arr, int start, List<String> list) {
// 遍历完毕
if (arr.length - 1 == start) {
String result = new String(arr);
if (!list.contains(result)) {
list.add(result);
}
} else {
for (int i = start; i < arr.length; i++) {
// 交换首尾
char temp = arr[start];
arr[start] = arr[i];
arr[i] = temp;
// 递归
permutation(arr, start + 1, list);
}
}
}
|