题意及思路
- 题意:😄题意十分简单,就是使给定数中,连接成的数字最大即可。
- 思路:😏这题本应该是个简单题,先说说我的心路历程。😉第一次,我想的是排序时比较数的最高位大小,然后WA了,举例说明,😊321和312不能光靠第一位上的数来排序。😌第二次,我就想着按位来比较,一个for循环,逐位比较每一位的大小,可是这样依旧WA,🙃具体例子还没想到。😛最后一次,就是拼接比大小,见下述代码。
return (o1 + o2).compareTo(o2 + o1);
代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
private static ArrayList<String> li = new ArrayList<>();
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
while (n-- > 0) {
String x = in.next();
li.add(x);
}
Collections.sort(li, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return (o1 + o2).compareTo(o2 + o1);
}
});
int si = li.size() - 1;
String ans = "";
for (int i = si; i >= 0; i--) {
ans += li.get(i);
}
System.out.println(ans);
in.close();
// 3713211331341
// 3713411331321
// 3713411331321
}
}