题目:输入一个正整数数组,把数组里所有整数拼接起来排成一个数,打印出能拼接出的所有数字中最小的一个。
例如输入数组{3,32,321}则打印出这3个数字能排成的最小数字为:321323。
使用jdk排序比较器进行比较,将需要比较的俩个值组拼起来将小的值放在前方
import java.sql.Array;
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
Integer[] arr = new Integer[n];
for(int i =0 ;i<n;i++){
arr[i] = input.nextInt();
}
System.out.println(minSort(arr));
}
public static String minSort(Integer[] arr){
Arrays.sort(arr,new Comparator<Integer>(){
@Override
public int compare(Integer o1, Integer o2) {
String s1 = o1+""+o2;
String s2 = o2+""+o1;
return s1.compareTo(s2);
}
});
StringBuffer sb = new StringBuffer();
for(int i : arr){
sb.append(i);
}
return sb.toString();
}
}