输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路:
1.先将其转换成String类型数组
2.定义一个比较器对其进行重新排序,排序规则:若s1+s2>s2+s1则s1排在前面
3.定义一个StringBuilder类型对象,将数组内的元素全append上去,组成最小的数
import java.util.*;
public class Solution {
public String PrintMinNumber(int [] numbers) {
int len = numbers.length;
String[] str = new String[len];
for(int i = 0; i<numbers.length;i++){
str[i] = String.valueOf(numbers[i]);
}
Arrays.sort(str,new Comparator<String>(){
public int compare(String s1,String s2){
String c1 = s1+s2;
String c2 = s2+s1;
return c1.compareTo(c2);
}
});
StringBuilder res = new StringBuilder();
for(int i=0;i<str.length;i++){
res.append(str[i]);
}
return res.toString();
}
}