题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
解题思路
- 将整数数组转化为字符串数组
- 字符串数组按照字典顺序排序
- 将字符串数组拼接为新的字符串
代码
import java.util.*;
public class Solution {
public String PrintMinNumber(int [] numbers) {
if(numbers.length==0 || numbers==null){
return "";
}
String[] str=new String[numbers.length];
StringBuilder sb=new StringBuilder();
for(int i=0;i<numbers.length;i++){
str[i]=String.valueOf(numbers[i]);
}
//定义一个比较器,指定比较的规则(将两个字符串拼接起来(ab ba),按照字典顺序排序)
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);
}
});
for(int i=0;i<str.length;i++){
sb.append(str[i]);
}
return sb.toString();
}
}