本文主要是介绍剑指offer — 把数组排成最小的数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{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();}
}
这篇关于剑指offer — 把数组排成最小的数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!