问题描述:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{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