思路:
1.把int数组转为String数组
2.对String数组排序,需要重写compare()方法。
1)当21和2比较时,按理21比2大,组合为212,但实际221更大。因此当字符之间比较时,如果一个字符包含于另一个字符,则被包含的字符放在前面。即2被21包含,2在21前面。
3.需要注意"0"+"0"+"0"组合后应该是"0",而不是"000"。

public String solve (int[] nums) {
        // write code here
        if(nums.length==0){
            return "";
        }
        StringBuilder res=new StringBuilder();
        String[] str=new String[nums.length];
        for(int i=0;i<nums.length;i++){
            str[i]=nums[i]+"";
        }
        //数组排序
        Arrays.sort(str, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                int i=0;
                while(i<o1.length() && i<o2.length()){
                    //若o1与o2不能完全包含对方或被对方包含,则退出,使用普通的比较方式,挨个字符比
                    if(o1.charAt(i)!=o2.charAt(i)){
                        break;
                    }
                    i++;
                }
                //o1被o2包含
                if(i==o1.length()){
                    return -1;
                }
                //o2被o1包含
                if(i==o2.length()){
                    return 1;
                }
                return o2.compareTo(o1);
            }
        });
        for(int i=0;i<str.length;i++){
            res.append(str[i]);
        }
        //需要判断是否属于0+0+0的情况
        if(Long.parseLong(res.toString())==0){
            return "0";
        }
        //把StringBuilder转为String类型。
        return res.toString();
    }