import java.util.*;


public class Solution {
    // 组成的数的位数是一定的,所以要保证高位的数字较小
    // 只考虑首字符的大小不可靠谱,但是如果字符串a拼接b得到的数字大于b拼接a,那么肯定b应该排在a的前面,我们就要按照这样的次序将排序的比较重写比较器就可以了
    public String PrintMinNumber (int[] numbers) {
        // write code here
        if(numbers.length == 0 || numbers == null) return "";
        String[] nums = new String[numbers.length];
        // 将数字转成字符
        for(int i = 0; i < numbers.length; i++){
            nums[i] = numbers[i] + "";
        }
        // 按照重写排序
	  	// 根据字典序排序,重写Comparator方法
        Arrays.sort(nums,new Comparator<String>(){
            public int compare(String s1, String s2){
                return (s1 + s2).compareTo(s2 + s1);
            }
        });
        StringBuilder str = new StringBuilder();
        for(String i : nums){
            str.append(i);
        }

        return str.toString();
    }
}