先把数组元素转化给字符串集合,然后对集合进行排序。排序规则是例如 1,20 这俩个元素,比较左右拼接的结果 120,201 如果右拼接大于左拼接就交换。最后输出排序后的集合的元素按序拼接的结果。需要注意的是,如果结果以 “0” 开头,直接返回 "0"。

import java.util.*;

public class Solution {
    /**
     * 最大数
     * @param nums int整型一维数组 
     * @return string字符串
     */
    public String solve (int[] nums) {
        if(null==nums || nums.length==0)
            return null;
        // write code here
        ArrayList<String> res = new ArrayList<>();
        for(int i=0;i<nums.length;i++)
            res.add(nums[i]+"");
        res.sort((a,b)->(b+a).compareTo(a+b));
        String result = "";
        for(String e:res){
            result+=e;
        }
        return result.startsWith("0")?"0":result;
    }
}