参考:点击打开链接
1.此题的技巧,我们可以用String的拼接和compareTo来帮我们做比较,比如9和45;
2. Comparator接口的compare是按小到大来排,缺省时,若想从大到小,可以将两个变量值逆着来比较
public class Solution {
public String largestNumber(int[] nums) {
if (nums == null || nums.length == 0) {
return "";
}
Integer [] strs = new Integer[nums.length];
for (int i = 0; i < nums.length; i++) {
strs[i] = nums[i];
}
Arrays.sort(strs, new Comparator<Integer>() {
public int compare(Integer str1, Integer str2) {
String s1 = String.valueOf(str1) + String.valueOf(str2);
String s2 = String.valueOf(str2) + String.valueOf(str1);
//return s1.compareTo(s2);
return s2.compareTo(s1);
}
});
if (strs[0] == 0)
return "0";
StringBuilder sb = new StringBuilder();
for (Integer str: strs) {
sb.append( String.valueOf(str));
}
return sb.toString();
}
}