题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路
两个数字m和n,如果拼接mn>nm,则,应该打印出nm,也就是n应该排在m前面。把数字m、n转化为字符串再拼接,然后只需按字符串大小比较规则比较就可以。
注意:Arrays.sort()与Collections.sort()比较
示例代码(Java)
import java.util.*;
public class Solution {
public String PrintMinNumber(int [] numbers) {
List<Integer> list=new ArrayList<Integer>();
for (int i : numbers) {
list.add(i);
}
Collections.sort(list,new Comparator<Object>(){
public int compare(Object arg0,Object arg1){
String s1=arg0+""+arg1;
String s2=arg1+""+arg0;
return s1.compareTo(s2);
}
});
StringBuffer res=new StringBuffer();
for(int a:list){
res.append(a);
}
return res.toString();
}
}