题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
这题就是个插入排序。
import java.util.ArrayList;
public class Solution {
public String PrintMinNumber(int [] numbers) {
StringBuffer sb = new StringBuffer();
//插入排序
for(int i=1; i<numbers.length; i++){
for(int j=0; j<i; j++){
if(compare(numbers[i],numbers[j])<=0){
int tmp = numbers[i];
for(int k=i; k>j; k--){
numbers[k]=numbers[k-1];
}
numbers[j] = tmp;
}
}
}
for(int i=0; i<numbers.length; i++){
sb.append(numbers[i]);
}
return sb.toString();
}
public int compare(int i, int j){
String str1 = String.valueOf(i);
String str2 = String.valueOf(j);
String tmp1 = str1+str2;
String tmp2 = str2+str1;
return tmp1.compareTo(tmp2);
}
}