HJ14 字符串排序

36 阅读2分钟

Problem: HJ14 字符串排序

题目描述

描述

给定 n 个字符串,请对 n 个字符串按照字典序排列。

数据范围:  1n1000 1≤n≤1000,字符串长度满足  1len100 1≤len≤100

输入描述:

输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。

输出描述:

数据输出n行,输出结果为按照字典序排列的字符串。

示例1

输入:9 cap
to
cat
card
two
too
up
boat
boot
输出: boat
boot
cap
card
cat
to
too
two
up

解题思路

使用Arrays.sort()方法

算法流程

  1. 创建了一Scanner对象scanner,用于读取用户输入。
  2. 通过scanner.nextInt()方法读取用户输入的整数n,并将其赋值给变量n
  3. 创建了一个长度为n的字符串数组strings,用于存储用户输入的字符串。
  4. 使用for循环遍历n次,每次读取用户输入的字符串,并将其存储到strings数组中。
  5. 使用Arrays.sort()方法对strings数组进行排序,按字典序进行排序。
  6. 使用for-each循环遍历排序后的strings数组,将每个字符串输出到控制台。

代码

import java.util.Scanner;
import java.util.Arrays;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        String[] strings = new String[n];
        for (int i = 0; i < n; i++) {
            strings[i] = scanner.next();
        }

        Arrays.sort(strings);
        for (String str : strings) {
            System.out.println(str);
        }
    }
}

复杂度

  • 时间复杂度:

添加时间复杂度, 示例: O(nlogn)O(n*log^n)

  • 读取用户输入的整数n的时间复杂度为O(1)。
  • 读取n个字符串的时间复杂度为O(n)。
  • 使用Arrays.sort()方法对字符串数组进行排序的时间复杂度为O(nlogn)。
  • 使用for-each循环遍历排序后的字符串数组并输出的时间复杂度为O(n)。
  • 空间复杂度:

添加空间复杂度, 示例: O(n)O(n)

  • 创建了一个长度为n的字符串数组,所以空间复杂度为O(n)。