题意及思路

  • 题意:😄题意十分简单,就是使给定数中,连接成的数字最大即可。
  • 思路:😏这题本应该是个简单题,先说说我的心路历程。😉第一次,我想的是排序时比较数的最高位大小,然后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
	}
}