牛客網——把陣列排成最小的數
阿新 • • 發佈:2018-11-02
輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最
小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。
用Java的比較器,比較兩個字元最大的字元,大的直接後面,相同就比較字串長度,長度長的排前面
package 劍指offer; import javax.servlet.http.HttpServletRequest; import java.util.Arrays; import java.util.*; /** * Created by Administrator on 2018/10/21. */ public class 把陣列排成最小的數 { public static String PrintMinNumber(int [] numbers) { ArrayList<String> str=new ArrayList<>(); for(int i=0;i<numbers.length;i++){ str.add(String.valueOf(numbers[i])); System.out.println(str.get(i)); } str.sort(new Comparator<String>() { @Override public int compare(String o1, String o2) { int max1=-1,max2=-1; for(int i=0;i<o1.length();i++){ if(max1<o1.charAt(i)-'0'){ max1=o1.charAt(i)-'0'; } } for(int i=0;i<o2.length();i++){ if(max2<o2.charAt(i)-'0'){ max2=o2.charAt(i)-'0'; } } if(max1>max2){ return 1; }else if(max1<max2){ return -1; }else{ if(o1.length()==o2.length()){ return 0; }else if (o1.length()<o2.length()){ return 1; }else{ return -1; } } } }); StringBuffer res=new StringBuffer(); for(int i=0;i<str.size();i++){ res.append(str.get(i)); } return res.toString(); } public static void main(String[] args){ int[] num={3,5,1,4,2}; System.out.println(PrintMinNumber(num)); } }