把数组排成最小的数

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

比较大小时候的巧妙解法

public class Solution {
    public String PrintMinNumber(int [] numbers) {
        Integer []s = new Integer[numbers.length];
        for(int i=0;i(){
            
            @Override
            public int compare(Integer o1, Integer o2) {
                // TODO Auto-generated method stub
                int a = Integer.valueOf(o1+""+o2);
                int b = Integer.valueOf(o2+""+o1);
                return a-b;
            }
        });
        StringBuilder str = new StringBuilder("");
        for(int i=0;i

纯手写比较的方法

public class Solution {
        int xa[] = new int[100];
        int lena = 0;
        int xb[] = new int[100];
        int lenb = 0;
        public  boolean compareSmaller(int a,int b){
            lena=0;
            while(a!=0){
                xa[lena] = a%10;
                a=a/10;
                lena++;
            }
            lenb = 0;
            while(b!=0){
                xb[lenb] = b%10;
                b=b/10;
                lenb++;
            }
            int i=lena-1;
            int j=lenb-1;
            while(i>=0&&j>=0){
                if(xa[i]>xb[j]){
                    return false;
                }
                i--;j--;
            }
            if(i>=0&&xa[i]>xb[lenb-1])  return false;
            if(j>=0&&xa[lena-1]>xb[j]) return false;
            return true;
        }
         
        public String PrintMinNumber(int [] numbers) {
            for(int i=0;i

你可能感兴趣的:(把数组排成最小的数)