输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

//方案一:

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();
}

}

写个冒泡排序更容易理解些