题解 | 把数组排成最小的数
把数组排成最小的数
https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993
import java.util.*; public class Solution { // 组成的数的位数是一定的,所以要保证高位的数字较小 // 只考虑首字符的大小不可靠谱,但是如果字符串a拼接b得到的数字大于b拼接a,那么肯定b应该排在a的前面,我们就要按照这样的次序将排序的比较重写比较器就可以了 public String PrintMinNumber (int[] numbers) { // write code here if(numbers.length == 0 || numbers == null) return ""; String[] nums = new String[numbers.length]; // 将数字转成字符 for(int i = 0; i < numbers.length; i++){ nums[i] = numbers[i] + ""; } // 按照重写排序 // 根据字典序排序,重写Comparator方法 Arrays.sort(nums,new Comparator<String>(){ public int compare(String s1, String s2){ return (s1 + s2).compareTo(s2 + s1); } }); StringBuilder str = new StringBuilder(); for(String i : nums){ str.append(i); } return str.toString(); } }