Leecode刷题笔记——179. 最大数

标签: LeeCode刷题总结

在这里插入图片描述
思路如下:
1、使用一个String数组将nums数组复制过来
2、通过重写compare方法对两个String参数的大小进行比较,注意是要比较ab和ba的大小。大的放前面,保证重组后的字符串最大

class Solution {
	//重写比较函数,用于得到两个字符串的先后顺序
    private class largestNumberComparator  implements Comparator<String>{
        @Override
        public int compare(String a,String b){
            //比较的是a+b和b+a哪个大,而不是a和b的大小
            String s1=a+b;
            String s2=b+a;
            //大的放前面
            return s2.compareTo(s1);
        }
    }
    public String largestNumber(int[] nums) {       
        //整型数组放入String数组中
        String[] tmp=new String[nums.length];
        for(int i=0;i<tmp.length;i++){
            tmp[i]=String.valueOf(nums[i]);
        }
        //使用重写的排序方法对tmp排序
        Arrays.sort(tmp,new largestNumberComparator());
        //边界条件,全为0时
        if(tmp[0].equals("0")){
            return "0";
        }
        //String数组取出来放入sb中
        StringBuilder sb=new StringBuilder();
        for(String s:tmp){
            sb.append(s);
        }
        return sb.toString();
    }
}

原题地址:
179. 最大数

版权声明:本文为weixin_45650420原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45650420/article/details/105624650