题解 | #字符串排序#
字符串排序
http://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723
题意整理。
- 输入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,对应要处理的字符串为常数级别,所以时间复杂度为。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为。
xqxls的题解 文章被收录于专栏
牛客题解