package com.example.utils;import java.util.ArrayList;import java.util.List;public class ArrayHelper { PRivate static int count = 0; public static void main(String[] args) { List<String> list = new ArrayList<>(); permutation(new char[] { 'A', 'B', 'C' }, 0, list); System.out.println(list); System.out.println(count + "次"); } /** * * 改进的版本,将最后的结果放入到list中 * * 结果加入count的测试 源代码的 continue部分根本没有执行到 * * @param arr * @param index * @param list */ private static void permutation(char[] arr, int index, List<String> list) { int size = arr.length; if (index == size) { StringBuffer sb = null; for (int i = 0; i < arr.length; i++) { sb = sb == null ? new StringBuffer() : sb; sb.append(arr[i]); } list.add(sb.toString()); sb = null; } else { for (int i = index; i < size; i++) { count++; swap(arr, i, index); permutation(arr, index + 1, list); swap(arr, i, index); } } } static void swap(char[] arr, int idx1, int idx2) { char temp = arr[idx1]; arr[idx1] = arr[idx2]; arr[idx2] = temp; } static void permutation(char[] arr, int index, int size) { if (index == size) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } else { for (int i = index; i < size; i++) { if (i != index && arr[i] == arr[index]) { continue; } swap(arr, i, index); permutation(arr, index + 1, size); swap(arr, i, index); } } }}
新闻热点
疑难解答