问题描述
小蓝有 n 个单词,但是单词中有一些是重复的,请帮小蓝去除重复的单词。
输入格式
输入第一行包含一个正整数 n ,表示小蓝的单词数量。
接下来 n 行,每行包含一个由小写字母组成的单词。
输出格式
请输出去除重复后的那些单词。如果一个单词出现了多遍,请保留第一次出现的单词,去除之后出现的单词,按输入的顺序输出。
样例输入
5
lanqiao
hi
hello
hello
lanqiao
样例输出
lanqiao
hi
hello
评测用例规模与约定
对于所有评测用例,1 <= n <= 100,每个单词的长度不超过 100。
运行限制
最大运行时间:1s
最大运行内存: 256M
代码
思路一:
使用暴力对比
import java.util.Scanner;
public class 单词去重 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
String[] str = new String[n];
for (int i = 0; i < str.length; i++) {
str[i] = scanner.next();
}
for (int i = 0; i < str.length; i++) {
for (int j = i + 1; j < str.length; j++) {
if (str[i].equals(str[j])) {
str[j] = "";
}
}
}
for (int i = 0; i < str.length; i++) {
if (str[i] != "") {
System.out.println(str[i]);
}
}
}
}
思路二:
使用set去重
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class 单词去重 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
Set<String> set = new HashSet<>();
for (int i = 0; i < n; i++) {
String s = scanner.next();
if (!set.contains(s)) {
set.add(s);
System.out.println(s);
}
}
}
}