把数组排成最小的数

问题描述:

        输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

思路分析:

       通过构造比较器,对于相邻的两个元素a和b,有两种拼接方式,ab和ba,利用String自带的比较器比较拼接后的两种字符串的大小,按字典顺序排列,构造好比较器后,通过比较器操作,最后的list中即为拼接后值最小。

代码如下:

publicclassSolution {

publicString PrintMinNumber(int[] numbers)

{

ArrayList list =newArrayList();

intlen = numbers.length;

String result="";

for(inti =0;i

{

list.add(numbers[i]);

}

Collections.sort(list,newComparator(){

publicintcompare(Integer t1,Integer t2)

{

String tm1 = t1+""+t2;

String tm2 = t2+""+t1;

returntm1.compareTo(tm2);

}

});

for(inti:list)

{

result+=i;

}

returnresult;

}

}

--day_two

添加笔记

你可能感兴趣的:(把数组排成最小的数)