Problem: HJ14 字符串排序
题目描述
描述
给定 n 个字符串,请对 n 个字符串按照字典序排列。
数据范围: ,字符串长度满足
输入描述:
输入第一行为一个正整数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()方法
算法流程
- 创建了一
Scanner
对象scanner
,用于读取用户输入。- 通过
scanner.nextInt()
方法读取用户输入的整数n,并将其赋值给变量n
。- 创建了一个长度为n的字符串数组
strings
,用于存储用户输入的字符串。- 使用
for
循环遍历n次,每次读取用户输入的字符串,并将其存储到strings
数组中。- 使用
Arrays.sort()
方法对strings
数组进行排序,按字典序进行排序。- 使用
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);
}
}
}
复杂度
- 时间复杂度:
添加时间复杂度, 示例:
- 读取用户输入的整数n的时间复杂度为O(1)。
- 读取n个字符串的时间复杂度为O(n)。
- 使用
Arrays.sort()
方法对字符串数组进行排序的时间复杂度为O(nlogn)。- 使用
for-each
循环遍历排序后的字符串数组并输出的时间复杂度为O(n)。
- 空间复杂度:
添加空间复杂度, 示例:
- 创建了一个长度为n的字符串数组,所以空间复杂度为O(n)。