说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。
import java.util.Arrays; import java.util.Comparator; class Solution { public String largestNumber(int[] nums) { String words[] = new String[nums.length]; for(int i = 0 ; i<nums.length ; i++){ words[i] = String.valueOf(nums[i]); } Arrays.sort(words,new com()); if(words[0].equals("0")){ return "0"; } String sum = ""; for(int i = 0 ; i<nums.length ; i++){ sum = sum + words[i]; } return sum; } private class com implements Comparator<String>{ @Override public int compare(String a ,String b){ String order1 = a + b; String order2 = b + a; return order2.compareTo(order1); } } }Comparator 来自 java.util.Comparator包 字符串对比要使用equals() 字符串拼接可以直接 + 运算符 Arrays.sort()是数组常用的排序函数 Arrays.sort()需要使用java.util.Arrays包,有s! Arrays.sort(数组[],new Comparator()) 接口实例类有括号,构造函数。 Arrays.sort()是通过传递Comparator的实例来自定义比较的,不是通过方法的重载或覆盖,事实上也不能覆盖。 Comparator 是一个接口需要被实现; 被实现的方法上有@Override O要大写 被实现的方法是compare() compare()内部可以调用compareTo() compareTo() 是 String类自带的;貌似只有String类有; compareTo() 从头比较两个字符串,直到某个字符不相等为止,长的大于短的,大写大于小写。 类的声明不需要加括号,无论是内部类还是私有什么的。 新建实例是要有括号的因为调用的是类的构造器。