所用编程:JAVA
基础知识:循环,Array排序,字符串拼接。
题目:
基本思路:
1.将数字转成字符存入数组;
2.利用Arrays比较数字拼接后的大小并重新排序;
3.输出。
代码:
import java.util.Arrays;
import java.util.Scanner;
public class sj5 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
String[]arr=new String[n];
for (int i = 0; i < n; i++) {//313 23 56 14 42
arr[i]=sc.next();
}
Arrays.sort(arr,(o1,o2)->(o2+o1).compareTo(o1+o2));
StringBuilder str= new StringBuilder();
for (int i = 0; i <n; i++) {
str.append(arr[i]);
}
System.out.println(str);
}
}
个人在排序过程中一直尝试使用冒泡排序,即通过多重循环冒泡,再从数字首位次位依次对比大小再度排序,但输出结果存在错误,而参考使用Arrays.sort(arr,(o1,o2)->(o2+o1).compareTo(o1+o2))进行排序。即将数组中其中两个数字提取拼接并进行大小比较而重新排序,不需要考虑首位次位等,更方便直接解决问题。