文字列の膨大なリスト (800 万から 1000 万) があります。ウィキペディアのページ タイトルです。これらの文字列に対してセットのようなデータ構造を作成した後、必要な操作はboolean contains(String str)
.
簡単な方法はHashSet
、TreeSet
または同様のものを使用することです(たとえば、Javaで)。
このユースケースにより適したデータ構造はありますか?
PS: ブルーム フィルターは使用できません。誤検知に対処したくありません。
文字列の膨大なリスト (800 万から 1000 万) があります。ウィキペディアのページ タイトルです。これらの文字列に対してセットのようなデータ構造を作成した後、必要な操作はboolean contains(String str)
.
簡単な方法はHashSet
、TreeSet
または同様のものを使用することです(たとえば、Javaで)。
このユースケースにより適したデータ構造はありますか?
PS: ブルーム フィルターは使用できません。誤検知に対処したくありません。
constant-time よりもスペースを節約することに関心がcontains()
あり、保存された文字列に多くの重複がある場合は、トライが役立つ場合があります。その場合、の長さは になりcontains(str)
ます。O(n)
n
str