【发布时间】:2012-11-23 13:41:51
【问题描述】:
我们有一个问题,我们想对大量 [1MM - 10MM] 的字符串(“型号”)进行子字符串搜索,以快速识别包含给定子字符串的任何“型号”。型号是短字符串,例如:
- ABB1924DEW
- WTW9400PDQB
- GLEW1874
目标很简单,给定一个子串,快速找到与该子串匹配的所有型号。例如(在上述型号的范围内),如果我们搜索字符串“EW”,该函数将返回 GLEW1874 和 ABB1924DEW(因为它们都包含子字符串 EW)。
数据结构还需要能够支持快速搜索以给定子字符串开头和/或以给定子字符串结尾的型号。例如,我们需要能够快速进行 WTW...B 之类的搜索(它将匹配 WTW9400PDQB,因为它以 WTW 开头并以 B 结尾)
我正在寻找的是一种内存数据结构,它可以非常有效地进行这些搜索。理想情况下,Java 中也会有一个很好的(简单)实现,我们可以在某个地方使用。简单(和快速)比超级复杂和稍微快一点要好。幼稚的算法(只是遍历所有零件号,对每个零件号进行子字符串搜索)对于我们的目的来说太慢了,我们正在寻找更快的东西(前提是好的)
那么,这个问题的教科书数据结构/算法是什么?
【问题讨论】:
-
是的,当您花时间帮助人们时,他们甚至不费心为您的答案投票,这非常令人沮丧。