相似度计算

这是一道简单的模拟
读取两篇文章的所有单词。
将所有单词转换为小写,以忽略大小写差异。
对每篇文章的单词进行去重,得到两个独立的单词集合 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();
    }
}