
题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
我的解答
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Solution { public String PrintMinNumber(int [] numbers) { if (null == numbers || numbers.length <= 0) { return ""; } else { int length = numbers.length; ArrayList<String> aString = new ArrayList<>(length); for (int i = 0; i < length; i++) { aString.add(String.valueOf(numbers[i])); } Collections.sort(aString, new Comparator<String>() {
@Override public int compare(String o1, String o2) { return (o1 + o2).compareTo(o2 + o1); } }); StringBuffer s = new StringBuffer(); for (String s1 : aString) { s.append(s1); } return s.toString(); } } }
|
近期评论