https://leetcode.com/problems/largest-number/
核心是建Comparator的问题,两个数排序时比较办法是,将其组合,比较谁在前谁在后所得结果更大。
s2.compareTo(s1)所得结果是降序,s1.compareTo(s2)所得结果是升序。
public class Solution {
public String largestNumber(int[] nums) {
if (nums == null || nums.length == 0) return "0";
Integer[] temp = new Integer[nums.length];
for (int i = 0; i < nums.length; i++) temp[i] = nums[i];
Arrays.sort(temp, new Comparator<Integer>() {
public int compare(Integer n1, Integer n2) {
String s1 = n1 + "" + n2, s2 = n2 + "" + n1;
return s2.compareTo(s1);
}
});
if (temp[0] == 0) return "0";
StringBuilder sb = new StringBuilder();
for (Integer i : temp) sb.append(i);
return sb.length() == 0 ? "0" : sb.toString();
}
}