ccf第33
相似度计算
这是一道简单的模拟
读取两篇文章的所有单词。
将所有单词转换为小写,以忽略大小写差异。
对每篇文章的单词进行去重,得到两个独立的单词集合 A 和 B。
计算集合 A 和 B 的交集大小 |A∩B|。
计算集合 A 和 B 的并集大小 |A∪B|。
只要算相同的就可以了 a并b = a+b-a交b
那就用set吧
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 1. 读取两篇文章的单词个数
int n = sc.nextInt();
int m = sc.nextInt();
// 读取换行符,避免影响后续读取 这个很关键
sc.nextLine();
// 2. 创建两个 Set,分别存储两篇文章的单词
Set<String> setA = new HashSet<>();
Set<String> setB = new HashSet<>();
// 3. 读取第一篇文章的单词并处理
String[] wordsA = sc.nextLine().split(" ");
for (String word : wordsA) {
// 将单词转换为小写,并添加到集合A中
setA.add(word.toLowerCase());
}
// 4. 读取第二篇文章的单词并处理
String[] wordsB = sc.nextLine().split(" ");
for (String word : wordsB) {
// 将单词转换为小写,并添加到集合B中
setB.add(word.toLowerCase());
}
// 5. 计算交集大小 |A∩B|
// 创建一个临时的 Set 来存储交集元素
Set<String> inter = new HashSet<>(setA);
// retainAll() 方法会保留 intersection 和 setB 共同拥有的元素
inter.retainAll(setB);
int interSize = inter.size();
// 6. 计算并集大小 |A∪B|
// 并集大小可以通过公式 |A∪B| = |A| + |B| - |A∩B| 来计算
int unionSize = setA.size() + setB.size() - interSize;
// 7. 输出结果
System.out.println(interSize);
System.out.println(unionSize);
sc.close();
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 言和和和!
评论
