- /**
- * 字符数组全排列
- *
- * @param a
- * @param start
- * @param set
- */
- static void perm(char a[], int start, HashSet<String> set) {
- if (start == a.length - 1) {
- // 输出排列结果
- set.add(new String(a));
- return;
- }
- else {
- for (int i = start; i <= a.length - 1; i++) {
- // 将数组片段的各元素与首元素交换
- swapArrayElements(a, start, i);
- // 对交换后的,去掉首元素的数组片段进行全排列
- perm(a, start + 1, set);
- // 交换回来
- swapArrayElements(a, start, i);
- }
- }
- }
- }
复制代码 |