题目
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。
示例 1:
输入: [10,2]
输出: 210
示例 2:输入: [3,30,34,5,9]
输出: 9534330
说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。
解题思路
直接重新排序规则即可。
代码如下
class Solution {
public String largestNumber(int[] nums) {
ArrayList<Integer> arrayList = new ArrayList<Integer>();
for (int i = 0; i < nums.length; i++) {
arrayList.add(nums[i]);
}
Collections.sort(arrayList, new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
String a = o1.toString();
String b = o2.toString();
Long res = Long.parseLong(b+a) - Long.parseLong(a+b);
return res.intValue();
}
});
StringBuilder res = new StringBuilder(nums.length);
for (int i = 0; i < nums.length; i++) {
res.append(arrayList.get(i));
if (i==0 && Integer.parseInt(res.toString()) == 0){
return "0";
}
}
return res.toString();
}
}
提交结果
成功
显示详情
执行用时 : 17 ms, 在Largest Number的Java提交中击败了75.24% 的用户
内存消耗 : 35.7 MB, 在Largest Number的Java提交中击败了98.40% 的用户