题意整理。

  • 输入n个字符串。
  • 对这n个字符串进行字典序排列,并输出。

方法一(调用sort)

1.解题思路

  • 新建字符串数组,存储所有输入的字符串。
  • 调用Arrays的sort方法对字符串数组进行排序,然后遍历字符串数组,输出所有的字符串。

图解展示: alt

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,对应要处理的字符串为常数级别,所以时间复杂度为O(1)O(1)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)

方法二(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,对应要处理的字符串为常数级别,所以时间复杂度为O(1)O(1)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)