我有以下情况:我有一大堆平均长度可能为 30 的字符串(比如说 250.000+)。我要做的是在这些字符串中进行很多搜索.. 大部分都是 StartsWith 和 Contains 类型的。
该集合在运行时是静态的。这意味着选择集合的初始读取和填充只进行一次..因此构建数据结构的性能绝对不重要。内存也不是问题:这也意味着如果需要,我不介意在每个集合中有两个具有相同数据的集合(比如一个用于startswith,另一个用于包含)。唯一重要的是搜索的性能,它应该返回与搜索条件匹配的所有元素。
首先,我遇到了 Trie 或 Radix-tree .. 但也许还有更好的选择?
For contains .. 我还没有好主意(除了在列表上运行 linq 查询,该列表不会很快处理大量数据)。
提前谢谢大家!
更新:我忘记了一个重要部分:使用包含我的意思是集合中没有完全匹配..但我想找到集合中包含给定搜索字符串的所有字符串