【问题标题】:find max match count set from multiple set从多个集合中找到最大匹配计数集合
【发布时间】:2016-12-19 17:36:11
【问题描述】:

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

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

其他集合列表

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

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

用最少的执行找到最好的算法。 任何指针或建议表示赞赏。

【问题讨论】:

  • 你最初的想法是什么?为什么(不)它会像您想象的那样最佳?请向我们展示您对此问题的解决方案!
  • 一开始,你可以使用 new Set(inSet).retainAll(set1/set2/set3)。

标签: java algorithm count


【解决方案1】:

让我们拥有Set<String> setGuava.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 的新数组。数组是固定长度的。

【讨论】:

  • 在我的问题中,我的意图是提供数据集,没有考虑表示。感谢您的建议,我会小心前进的。
  • @Bharat 很高兴听到它 - 大多数时候,人们不知道番石榴......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多