从多个集中查找最大匹配计数集

时间:2016-12-19 17:36:12

标签: java algorithm count

我正在寻找找到最大字符串匹配的匹配集的最佳解决方案。 这是一个例子,

inSet = ["a","b","c","x"]

其他列表

set1 = ["a","d","q","s"]
set2 = ["a","m","t","b","z"]
set3 = ["a","x","b","s","r","t"]

在上面的例子中,set3是max。匹配计数(3)。

什么是最小的执行找到的最佳算法。 任何指针或建议都表示赞赏。

1 个答案:

答案 0 :(得分:3)

让我们拥有Set<String> set Guava.Sets

Set<Set<String>> set = new Set<>();
//add Set<String>s
Set<String> maxMatchSet = set.stream()
                              .max(Comparator.comparingInt((value -> Sets.intersection(value, inSet).size()))
                              .get();
好的,现在有些理论。 ["a", "b"]不是集合,而是数组(或列表)。我们在Java中有不同的数据结构。集合以{}表示。

无论如何,重要的是代码。

Set<String> set = new HashSet<>();

会初始化Set

List<String> list = new ArrayList<>();

会初始化List。还有另一种选择:

String[] array = new String[3];

将初始化大小为3的新数组。数组是固定长度的。