劍指offer:(33)時間效率 :把陣列排成最小的數
阿新 • • 發佈:2018-11-09
輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{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; } }