解决此题的关键在于如何运用排序,当输入多个值时,我们要拼接成最大数,必然是要看高位数,高位数值越大,其拼接构成的值就会越大。基于此,我们就会想到,在字符串的方法中,有一个compareTo()方法,可以逐个扫描值的最高位。为了避免比较的字符串长度不同问题(因为不同会造成无法正确的比较我们想要的值),所以我们要构建两个相同长度的字符串进行比较,才能得出结果,再利用冒泡排序,将最大值推到数组的最前面,最后输出即可。
import java.util.*; public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String[] s=new String[n];
for(int i=0;i<n;i++) {
s[i]=sc.next();
}
for(int i=1;i<n;i++) {
for(int j=0;j<n-i;j++) {
if((s[j]+s[j+1]).compareTo(s[j+1]+s[j])<0) {
String temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
for(int i=0;i<n;i++) {
System.out.print(s[i]);
}
}
}