問(wèn)題描述:
? ? ? ? 輸入一個(gè)正整數(shù)數(shù)組,把數(shù)組里所有數(shù)字拼接起來(lái)排成一個(gè)數(shù),打印能拼接出的所有數(shù)字中最小的一個(gè)。例如輸入數(shù)組{3,32,321},則打印出這三個(gè)數(shù)字能排成的最小數(shù)字為321323。
思路分析:
? ? ? ?通過(guò)構(gòu)造比較器,對(duì)于相鄰的兩個(gè)元素a和b,有兩種拼接方式,ab和ba,利用String自帶的比較器比較拼接后的兩種字符串的大小,按字典順序排列,構(gòu)造好比較器后,通過(guò)比較器操作,最后的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