算法记录
LeetCode 题目:
给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
说明
一、题目
输入: nums = [10,2]
输出: "210"
二、分析
- 题目没有什么大的难点,就是一个排序即可,但是需要注意的是排序的规则,是两个数分别拼接形成的数字来进行比较。
- 用数字进行操作还要自己去判断有多少位然后拼接,可以先转换为字符串,然后使用字典序来排序,因为出现的全是数字。
- 最后还需要注意全零的判断,最大值是零那么就直接返回零就可以了。
class Solution {
public String largestNumber(int[] nums) {
String[] words = new String[nums.length];
for(int i = 0; i < nums.length; i++) {
words[i] = String.valueOf(nums[i]);
}
Arrays.sort(words, (o1, o2) -> {
String t1 = o1 + o2, t2 = o2 + o1;
return t1.compareTo(t2);
});
if("0".equals(words[words.length - 1])) return "0";
StringBuilder builder = new StringBuilder();
for(int i = words.length - 1; i >= 0; i--) {
builder.append(words[i]);
}
return builder.toString();
}
}
总结
编码能力的考察。