把数组排成最小的数 --剑指offer
题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
import java.util.*; public class Solution { public String PrintMinNumber(int [] numbers) { String[] str=new String[numbers.length]; for(int i=0;i<str.length;i ++){ str[i]=String.valueOf(numbers[i]); } Arrays.sort(str, new Comparator<String>() { @Override public int compare(String o1, String o2) { String s1=o1+o2; String s2=o2+o1; return s1.compareTo(s2); } }); StringBuilder sb=new StringBuilder(str.length); for(int i=0;i<str.length;i++){ sb.append(str[i]); } return sb.toString(); } }