我正在寻找找到最大字符串匹配的匹配集的最佳解决方案。 这是一个例子,
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)。
什么是最小的执行找到的最佳算法。 任何指针或建议都表示赞赏。
答案 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的新数组。数组是固定长度的。