【发布时间】:2011-02-18 09:28:51
【问题描述】:
我需要将一系列用户输入的单词与大型单词词典进行匹配(以确保输入的值存在)。
所以如果用户输入:
"orange" it should match an entry "orange' in the dictionary.
现在要注意的是,用户还可以输入通配符或一系列通配符,例如say
"or__ge" which would also match "orange"
关键要求是:
* this should be as fast as possible.
* use the smallest amount of memory to achieve it.
如果单词列表的大小很小,我可以使用包含所有单词的字符串并使用正则表达式。
但是鉴于单词列表可能包含潜在的数十万个词条,我认为这是行不通的。
那么,某种“树”是实现此目的的方法吗...?
对此的任何想法或建议将不胜感激!
提前致谢, 马特
【问题讨论】:
-
我不确定,但我认为后缀树可能是您正在寻找的 - en.wikipedia.org/wiki/Suffix_tree
-
您必须支持所有 grep 样式的通配符还是只支持 ? (下划线 _ 在你的情况下)?
-
通配符是只匹配单个字符还是可以匹配任意长度的字符串?
-
只是下划线,每个下划线代表一个字符。
标签: performance algorithm data-structures memory-management