给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例一:
示例二:
思路分析:
此题利用集合的内置排序实现较简单,由于输入数据可重复,所以不能直接利用TreeSet集合,所以我们重写集合中的sort方法,然后按照特定的方式排序后,将排序后的元素依次添加到StringBuffer中,注意最后要以String类型返回;
代码展示:
class Solution {
public String largestNumber(int[] nums) {
//因为可以输入重复的数据,这里就不能采用TreeSet集合
List<String> list=new ArrayList<>();
for (int num : nums) {
list.add(num+"");
}
list.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
String str1=o1+o2;
String str2=o2+o1;
return str2.compareTo(str1);
}
});
StringBuffer stringBuffer=new StringBuffer();
for (String s : list) {
stringBuffer.append(s);
}
if(stringBuffer.charAt(0) == '0')
return "0";
return stringBuffer.toString();
}
}