一、题目
给定一组非负整数 nums,重新排列它们每个数字的顺序(每个数字不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例 :
输入:nums = [3,30,34,5,9]
输出:"9534330"
二、代码
class Solution {
//自定义排序规则
//一对整数 a 和 b ,如果a + b > b + a ,则a 应该排在 b前面
//例如 比较 3 和 30谁排在前面,则 330 > 303,即 3排在30前面
private class MaxNumComparator implements Comparator<String>{
@Override
public int compare(String a, String b){
String combine1 = a + b;
String combine2 = b + a;
return combine2.compareTo(combine1);
}
}
public String largestNumber(int[] nums) {
String[] str = new String[nums.length];
int i = 0;
for(int num : nums){
str[i] = Integer.toString(num);
i++;
}
Arrays.sort(str, new MaxNumComparator());
if(str[0].equals("0")){
return "0";
}
String largestNumber = "";
for(String s : str){
largestNumber += s;
}
return largestNumber;
}
}