题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
示例
输入
[3,32,321]
返回值
"321323"
比较两个字符串s1, s2大小的时候,先将它们拼接起来,比较s1+s2,和s2+s1哪个大,如果s1+s2大,那说明s2应该放前面。
public class Main {
public static void main(String[] args) {
// write your code here
int[] arr = new int[]{2,13,651};
System.out.println(PrintMinNumber(arr));
}
public static String PrintMinNumber(int [] number) {
if(number==null||number.length==0)
return "";
for(int i=0;i<number.length;i++){
for(int j=i+1;j<number.length;j++){
String sum1=number[i]+String.valueOf(number[j]);
String sum2=number[j]+String.valueOf(number[i]);
if(sum1.compareTo(sum2)>0){
int temp=number[i];
number[i]=number[j];
number[j]=temp;
}
}
}
String str="";
for(int i=0;i<number.length;i++)
str=str+number[i];
return str;
}
}