刚开始犯得错误:直接将整型数组去从大到小去排序,以为就是正确结果。
用例: 10,1
我的输出会是101,而正确的是110,所以这很明显是错误的,考虑不周到。
那么直接用整型的就不行,那就另辟蹊径,用字符串形式进行排序。
但是排序的规则要如何定义呢?
我们知道,两个字符串之间比较大小的是比较每一个字符的大小,遇到第一个不相等的字符则会根据其ASCII码来比较大小,我们都知道整型数字越大,ASCII码也越大,所以我们只需要比较A+B跟B+A之间的大小,将数组按照这个规则去排序,拍出来的不就是我们想要的结果了吗?

public String solve (int[] nums) {
        // 3   32  321
        if(nums == null || nums.length == 0)
            return "";
        int n = nums.length;
        String[] strs = new String[n];
        for(int i = 0; i < n; i++){
            strs[i] = nums[i]+"";
        }
        Arrays.sort(strs,(s1,s2)->{
           return (s2+s1).compareTo(s1+s2);  /*降序排序*/
        });
        if(strs[0].equals("0"))
            return "0";
        StringBuffer sb = new StringBuffer();
        for(String num:strs)
            sb.append(num);
        return sb.toString();
    }