1. 程式人生 > >劍指offer:(33)時間效率 :把陣列排成最小的數

劍指offer:(33)時間效率 :把陣列排成最小的數

輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。

import java.util.ArrayList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Solution {
    public String PrintMinNumber(int [] numbers) {
        String s = "";
        ArrayList<Integer> list = new ArrayList<Integer>();
        for(int i = 0;i<numbers.length;i++){
            list.add(numbers[i]);
        }
        Collections.sort(list, new Comparator<Integer>() {       
            @Override
            public int compare(Integer o1, Integer o2) {
                //兩個資料進行字串連線,比較
                String s1 = o1+""+o2;
                String s2 = o2+""+o1;
                return s1.compareTo(s2);
            }
        });
        for(int j:list){
            s += j;
        }
        return s;
 
    }
}