Leetcode.179.最大数–每日一题
题目难度:中等
题目:原题链接
思路:
1、今天这道题的核心将数字先转化为字符串,
2、然后拼接,比较大小;
3、其中compareTo()方法比较大小的机制是按照ASCII按位比较大小,
4、比较(x+y)和(y+x)判断x,y谁应该排在前面,
5、还要考虑如果是全零的元素数组,
6、所以前一步要对字符数组排序,
class Solution {
public String largestNumber(int[] nums) {
String arr[] = new String[nums.length];
//1、先转化为字符串数组
for(int i=0;i<n;i++){
arr[i] = String.valueOf(nums[i]);
}
Arrays.sort(arr,(x,y)->{
return (x+y).compareTo(y+x);
});
//如果排序后的第一个元素是0,那后面的元素肯定小于或等于0,则可直接返回0
if(arr[0].equals("0")){
return "0";
}
StringBuilder sb = new StringBuilder();
for(int i=0;i<n;i++){
sb.append(arr[i]);
}
return sb.toString();
}
}