这里需要注意要将nums数组转成String类型的数组,因为源码中Arrays.sort()调用的comparator接口中函数的两个参数为T(泛型),而nums数组的类型为int,这里不会自动转化为Integer类型,所以会报错。
class Solution {
public String minNumber(int[] nums) {
int n = nums.length;
//转成字符串数组
String[] str = new String[n];
for (int i = 0;i < n;i++){
str[i] = Integer.toString(nums[i]);
}
//按字典序排序
Arrays.sort(str, (o1, o2) -> {
//如果o1+o2 > o2+o1,说明o1大于o2,返回1,交换二者位置
return (o1 + o2).compareTo(o2 + o1);
});
String ans = Arrays.toString(str);
ans = ans.replace(", ","");
return ans.substring(1,ans.length() - 1);
}
}
或者也可以直接将nums数组转化为Integer数组,但需要修改重写的方法
class Solution {
public String minNumber(int[] nums) {
int n = nums.length;
//转成整形数组
Integer[] f = new Integer[n];
for (int i = 0;i < n;i++){
f[i] = nums[i];
}
//按字典序排序
Arrays.sort(f, (o1, o2) -> {
//如果o1+o2 > o2+o1,说明o1大于o2,返回1,交换二者位置
return (o1.toString() + o2).compareTo(o2.toString() + o1);
});
String ans = Arrays.toString(f);
ans = ans.replace(", ","");
return ans.substring(1,ans.length() - 1);
}
}