私は最大の文字列一致で一致するセットを見つけるための最良のソリューションを探しています。ここで は、たとえば、セット上の例では最大一致数が複数のセットから設定されています
set1 = ["a","d","q","s"]
set2 = ["a","m","t","b","z"]
set3 = ["a","x","b","s","r","t"]
の
inSet = ["a","b","c","x"]
他のリストであり、SET3は最大です。一致カウント(3)。
最小限の実行で見つけるのに最適なアルゴリズムは何ですか? 任意のポインタまたは提案をいただければ幸いです。
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();
OK、今いくつかの理論:
あなたの最初のアイデアは何ですか?なぜあなたは思ったほど最適なものではないでしょうか?この問題を解決する方法を教えてください! – n247s
最初に、新しいSet <>(inSet).retainAll(set1/set2/set3)を使用できます。 –