直接上代码
import java.util.HashSet;
import java.util.Set;
public class ChineseCharacterCoverage {
public static void main(String[] args) {
String sentence1 = "我爱北京天安门";
String sentence2 = "天安门上太阳升";
double coverage1 = calculateCoverage(sentence1, sentence2);
double coverage2 = calculateCoverage(sentence2, sentence1);
System.out.printf("句子1对句子2的涵盖率: %.2f%%\n", coverage1 * 100);
System.out.printf("句子2对句子1的涵盖率: %.2f%%\n", coverage2 * 100);
}
public static double calculateCoverage(String sentence1, String sentence2) {
Set<Character> set1 = new HashSet<>();
Set<Character> set2 = new HashSet<>();
// 填充集合
for (char c : sentence1.toCharArray()) {
set1.add(c);
}
for (char c : sentence2.toCharArray()) {
set2.add(c);
}
// 计算并集
Set<Character> unionSet = new HashSet<>(set1);
unionSet.addAll(set2);
// 计算交集
set1.retainAll(set2);
// 计算涵盖率
double coverage = set1.size() / (double) unionSet.size();
return coverage;
}
}