输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
//方案一:
public class Solution {
public String PrintMinNumber(int [] numbers) {
int len=numbers.length;
String a[]=new String[len];
for(int i=0;i<len;i++){
a[i]=String.valueOf(numbers[i]);
}
String aa=null;
String bb=null;
String temp=null;
for(int i=0;i<len-1;i++)
for(int j=0;j<len-i-1;j++){
aa=a[j]+a[j+1];
bb=a[j+1]+a[j];
if(aa.compareTo(bb)>0)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
StringBuffer s=new StringBuffer();
for(int i=0;i<len;i++)
s.append(a[i]);
return s.toString();
}
}
//方案二
import java.util.ArrayList;
import java.util.*;
public class Solution {
public String PrintMinNumber(int [] numbers) {
int len=numbers.length;
ArrayList<String> list = new ArrayList<String>();
for(int i=0;i<len;i++)
list.add(String.valueOf(numbers[i]));
Collections.sort(list,new Comparator<String>(){
public int compare(String s1,String s2){
String temp1=s1+s2;
String temp2=s2+s1;
return temp1.compareTo(temp2);
}
});
StringBuffer s = new StringBuffer();
for(String i:list)
s.append(i);
return s.toString();
}
}
写个冒泡排序更容易理解些