/*思路是 重写 collection.sort 的 compare 方法 对 数组进行排序 然后再逐一粘贴在后面组成 string就可以了 ,
重写compare 方法的思路是: 当 9 , 30 拿出来比较的时候, 如果930 大与 309 就把9放在前面;
注意: 要用Arrays.sort 不要用Collections.sort
comparator<t> 比较的是object 所以不能用int 去比较 会出错;
*/
class Solution {
public String largestNumber(int[] nums) {
if(nums == null || nums.length == 0) return "";
String[] s = new String[nums.length];
for(int i = 0; i < nums.length; i++) {
s[i] = String.valueOf(nums[i]);
}
Arrays.sort(s, new comp());
String result = "";
for(int i = 0; i < nums.length; i++) {
result += s[i];
}
//去0操作
int i = 0;
while(i < nums.length && result.charAt(i) == '0') {
i++;
}
if(i == nums.length) {
return "0";
}
return result.substring(i);
}
}
class comp implements Comparator<String> {
public int compare(String a, String b) {
return (b + a).compareTo(a + b);
}
}