输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
其中排序时,一定要使用Integer数组进行排序,int类型的不能使用
java
import java.util.Arrays;
import java.util.Comparator;
import java.util.ArrayList;
public class Solution {
public String PrintMinNumber(int[] array) {
if (array == null || array.length == 0) {
return "";
}
Integer[] nums = new Integer[array.length];
for (int i = 0; i < nums.length; i++) {
nums[i] = new Integer(array[i]);
}
Comparator<Integer> cmp = new Comparator<Integer>() {
public int compare(Integer a1, Integer a2) {
String str1 = a1 + "" + a2;
String str2 = a2 + "" + a1;
return str1.compareTo(str2);
}
};
Arrays.sort(nums, cmp);
StringBuffer sb = new StringBuffer();
for (int val : nums) {
sb.append(val);
}
return sb.toString();
}
}