1)题目
2)代码:
//对于数组中的任意两个数,我们都按照合成最大数的形式排序,那么得到的数组一定就是解。
//然而我们知道比较俩个数的大小,我们是从最高位比起,一位一位的比较。这其实是字符串的比较方式。
class Solution1{
public static String largestNumber(int[] nums) {
//长度为1,直接返回结果
if (nums.length==1){
return nums[0]+"";
}
StringBuffer answer = new StringBuffer(nums.length);
String[] strings = new String[nums.length];
//将int数组转换为字符串数组,便于排序
for (int i = 0; i < nums.length; i++) {
strings[i]=String.valueOf(nums[i]);
}
//采用从大到小,避免后面反向。是比较两个字符串连接的结果,而不是两个字符串的
Arrays.sort(strings,(s1,s2)->-(s1+s2).compareTo(s2+s1));
if ("0".equals(strings[0]))
return "0";
for (String s:strings){
answer.append(s);
}
return answer.toString();
}
}
3)