描述
输入一行单词序列,相邻单词之间由1个或多个空格间隔,请按照字典序输出这些单词,要求重复的单词只输出一次。(区分大小写)
输入
一行单词序列,最少1个单词,最多100个单词,每个单词长度不超过50,单词之间用至少1个空格间隔。数据不含除字母、空格外的其他字符。
输出
按字典序输出这些单词,重复的单词只输出一次。
样例输入
She wants to go to Peking University to study Chinese
样例输出
Chinese
Peking
She
University
go
study
to
wants
此题思路比较简单,按照字典顺序排序就是按照首字母排序,与其说是考排序,不如说是考对compareTo()方法的理解。
在java中,字符串大小的比较是一个字符一个字符比较的,调用的compareTo()方法
原理:
1.如果字符串完全相等返回0
2.字符串第一个字符不等,结束比较,返回字符ASCII差值
3.相等则继续比较,直至比较完,当有一方比较完毕时,就比较字符串长度。
这个规则非常适用于字典排序,用过牛津词典的同学都知道,查字典先查首字母,其次是第二个字母,依次类推。
如此,甚至不用我们自己写排序代码,用自带的工具类排序即可。
完整代码
import java.util.*;
import java.util.stream.Collectors;
public class test5 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String data=input.nextLine();
for(String str:sort(data))
System.out.println(str);
}
public static List<String> sort(String data) {
return Arrays.stream(data.split(" ")).distinct().sorted().collect(Collectors.toList());
}
}