把数组排成最小的数

来源:互联网 发布:淘宝折也怎么报名 编辑:程序博客网 时间:2024/06/02 18:41

题目描述:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
解题思路:
1.对数字组合ab和ba的值进行比较
   如果 ab > ba ,则a > b
   如果 ba > ab ,则b > a
   如果ab=ba ,则a = b
2.按此种方式对所有数字排序,最后将排序后的数字连接成最小的数字
实际操作:

    public String PrintMinNumber(int [] numbers) {        if(numbers.length == 0 || numbers == null) return "";        ArrayList<Integer> list = new ArrayList<>();        for (int i = 0; i < numbers.length; i++) {            list.add(numbers[i]);        }        //对list集合排序        Collections.sort(list, new Comparator<Integer>() {            //比较字符串            public int compare(Integer o1, Integer o2) {                String string1=o1+""+o2;                String string2=o2+""+o1;                return string1.compareTo(string2);            }        });        String str = "";        //组合成最小的数字        for (int i = 0; i < numbers.length; i++) {            str+=list.get(i);        }        return str;    }
0 0
原创粉丝点击