题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路:重载比较方法,按新的比较方法排序并依次输出
代码:
import java.util.*;
public class Solution {public String PrintMinNumber(int [] numbers) {
//保存结果
String result=new String();
int length=numbers.length;
if(length<=0){
return result;
}
//保存排序后的数字
ArrayList<Integer> array=new ArrayList<Integer>();
for(int i=0;i<length;i++){
array.add(numbers[i]);
}
//重载比较方法并排序
Collections.sort(array,new Comparator<Integer>(){
@Override
public int compare(Integer n1, Integer n2) {
// TODO Auto-generated method stub
String str1=n1+""+n2;
String str2=n2+""+n1;
return str1.compareTo(str2);
}
});
//依次输出数字返回
for(int temp:array){
result+=temp;
}
return result;
}
}