// 题目描述// 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。// 例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 public static String PrintMinNumber(int[] numbers) { String result =""; TreeSetstrings = new TreeSet (); Permutation(numbers, 0, strings); if (strings.size()>0){ result = strings.first(); } return result; } public static void Permutation(int[] ints, int start, TreeSet arrayList) { //结束条件 if (start > ints.length - 1 || ints == null) { return; } if (start == ints.length - 1) { arrayList.add(intToString(ints)); } else { for (int i = start; i < ints.length; i++) { if (i == start) { //start 是第一个 Permutation(ints, start + 1, arrayList); } else { //start 不是第一个 //交换 swap(ints, start, i); Permutation(ints, start + 1, arrayList); //恢复 swap(ints, start, i); } } } } public static String intToString(int[] ints) { StringBuilder stringBuilder = new StringBuilder(); for (int i=0;i