题意整理。
- 输入n个字符串。
- 对这n个字符串进行字典序排列,并输出。
方法一(调用sort)
1.解题思路
- 新建字符串数组,存储所有输入的字符串。
- 调用Arrays的sort方法对字符串数组进行排序,然后遍历字符串数组,输出所有的字符串。
图解展示:
2.代码实现
import java.util.Arrays;
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        //输入正整数n
        int n=sc.nextInt();
        //用于存储输入的字符串
        String[] str=new String[n];
        for(int i=0;i<n;i++){
            str[i]=sc.next();
        }
        //按字典序排列
        Arrays.sort(str);
        //输出所有字符串
        for(String s:str){
            System.out.println(s);
        }
    }
}
3.复杂度分析
- 时间复杂度:输入的字符串个数不超过1000,对应要处理的字符串为常数级别,所以时间复杂度为。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为。
方法二(io流)
1.解题思路
思路和方法一相同,不过使用io流的方式来处理输入。
2.代码实现
import java.io.*;
import java.util.Arrays;
public class Main{
    public static void main(String[] args){
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        try{
            //输入正整数n
            int n=Integer.parseInt(br.readLine());
            //用于存储输入的字符串
            String[] str=new String[n];
            for(int i=0;i<n;i++){
                str[i]=br.readLine();
            }
            //按字典序排列
            Arrays.sort(str);
            //输出所有字符串
            for(String s:str){
                System.out.println(s);
            }
        }
        catch(IOException e){
            
        }
        
    }
}
3.复杂度分析
- 时间复杂度:输入的字符串个数不超过1000,对应要处理的字符串为常数级别,所以时间复杂度为。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为。

 京公网安备 11010502036488号
京公网安备 11010502036488号