洛谷 [NOIP1998 提高组] 拼数

116 阅读1分钟

题目链接:[NOIP1998 提高组] 拼数

[NOIP1998 提高组] 拼数

题目描述

设有 nn 个正整数 a1ana_1 \dots a_n,将它们联接成一排,相邻数字首尾相接,组成一个最大的整数。

输入格式

第一行有一个整数,表示数字个数 nn

第二行有 nn 个整数,表示给出的 nn 个整数 aia_i

输出格式

一个正整数,表示最大的整数

样例 #1

样例输入 #1

3
13 312 343

样例输出 #1

34331213

样例 #2

样例输入 #2

4
7 13 4 246

样例输出 #2

7424613

提示

对于全部的测试点,保证 1n201 \leq n \leq 201ai1091 \leq a_i \leq 10^9

NOIP1998 提高组 第二题

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();

        List<String> stringList = new ArrayList<>();

        for (int i = 0; i < n; i++) {
            String next = scanner.next();
            stringList.add(next);
        }

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n - i - 1; j++) {
                if ((stringList.get(j) + stringList.get(j + 1)).compareTo(stringList.get(j + 1) + stringList.get(j)) > 0) {
                    String tmp = stringList.get(j);
                    stringList.set(j, stringList.get(j + 1));
                    stringList.set(j + 1, tmp);
                }
            }
        }
        String str = "";

        for (int i = 0; i < n; i++) {
            str = stringList.get(i) + str;
        }
        System.out.println(str);
    }
}