【字符串】179. 最大数(复习)

题目:

给定一组非负整数 nums,重新排列它们每位数字的顺序使之组成一个最大的整数。

注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

 

示例 1:

输入:nums = [10,2]
输出:"210"
示例 2:

输入:nums = [3,30,34,5,9]
输出:"9534330"
示例 3:

输入:nums = [1]
输出:"1"

 

解答:

方法一:自定义排序

 

class Solution {

    //排序规则的发现很关键
    private class largestNumberComparator implements Comparator<String>{
        
        public int compare(String a,String b){
            String order1 = a+b;
            String order2 = b+a;
            return order2.compareTo(order1);
        }
    }
    public String largestNumber(int[] nums) {
        String[] strs = new String[nums.length];
        for(int i =0;i<nums.length;i++){
            strs[i] = String.valueOf(nums[i]);
        }
        Arrays.sort(strs,new largestNumberComparator());

        if(strs[0].equals("0")){
            return "0";
        }

        StringBuilder res = new StringBuilder();
        for(int i =0;i<strs.length;i++){
            res.append(strs[i]);
        }

        return res.toString();
    }
}

 

posted @ 2020-10-06 21:23  3KBLACK  阅读(124)  评论(0)    收藏  举报