面試題:把數組排成最小的數
阿新 • • 發佈:2018-08-26
compare clas 一個 pub tor str 所有 重點 最小
題目描述:輸入一個正整數數組,把數組裏所有數字拼接起來排成一個數,打印能拼接出的所有數字中最小的一個。例如輸入數組{3,32,321},則打印出這三個數字能排成的最小數字為321323。
重點是重寫Comparator函數
代碼:
import java.util.ArrayList; import java.util.Comparator; import java.util.Arrays; public class Solution { public String PrintMinNumber(int [] numbers) { if(numbers==null||numbers.length==0) return""; int len=numbers.length; String[] str=new String[len]; StringBuffer sb=new StringBuffer(); for(int i=0;i<len;i++){ str[i]=String.valueOf(numbers[i]); } //重寫Comparator函數 Arrays.sort(str,new Comparator<String>(){public int compare(String s1,String s2){ String c1=s1+s2; String c2=s2+s1; return c1.compareTo(c2); } }); for(int i=0;i<len;i++){ sb.append(str[i]); } return sb.toString(); } }
面試題:把數組排成最小的數