把数组排成最小的数

题目链接

思路

  1. 把数字存到arrayList中
  2. 找到一种规则快排,就是比较mn和nm的字典序
  3. 拼接返回
import java.util.ArrayList;



import java.util.Collections;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.Stack;
import java.util.TreeSet;

public class Solution {
    public String PrintMinNumber(int [] numbers) {
         ArrayList<String>  arrayList = new ArrayList<String>();
         for(int i=0;i<numbers.length;i++){
             arrayList.add(new String(numbers[i]+""));
         }
         Comparator<String> comparator = new Comparator<String>() {

            @Override
            public int compare(String o1, String o2) {
                // TODO Auto-generated method stub
                String mn = o1 +o2;
                String nm = o2 +o1;
                for(int i=0;i<mn.length();i++){
                    if(mn.charAt(i)!=nm.charAt(i)){
                        return mn.charAt(i) - nm.charAt(i);
                    }
                }
                return 0;
            }
        };
         Collections.sort(arrayList,comparator);
         StringBuffer result = new StringBuffer();
         for(int i=0;i<arrayList.size();i++){
             result.append(arrayList.get(i));
            // System.out.println(arrayList.get(i));
         }
        return result.toString();
    }
}

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