给定一个数组由一些非负整数组成,现需要将他们进行排列并拼接,使得最后的结果最大,返回值需要是string类型 否则可能会溢出.
示例1 [30,1] 输出 "301"
题解:
1.首先题目给的是整型数组,我们先将整型数组转化为字符串数组
2.其次将字符串数组排序,两个字符串之间比较大小的是比较每一个字符的大小,
遇到第一个不相等的字符则会根据其ASCII码来比较大小,
我们都知道整型数字越大,ASCII码也越大,所以我们只需要比较A+B跟B+A之间的大小,
从而确定两个字符串是否换位置。
3.排序好的数组如果第一位是0直接输出“0”即可
解法一: Collections辅助排序
import java.util.*;
public class Solution {
/**
* 最大数
* @param nums int整型一维数组
* @return string字符串
*/
public String solve (int[] nums) {
ArrayList<String> list = new ArrayList<String>();
for(int i=0;i<nums.length;i++){
list.add(String.valueOf(nums[i]))
}
if(list.size==0){
return;
}
Collections.sort(list,new Comparetor<String>(){
@Override
public int compare(String a,String b){
return (b+a).compraeTo(a+b);//降序排列
}
});
if(list.get(0).equals("0"))return "0";
StringBuilder res = new StringBuilder();
for(int i=0;i<list.size;i++){
res.append(list.get(i));
}
return res.toString();
}
}