【发布时间】:2011-10-28 07:29:54
【问题描述】:
假设我有 100 个关键字(可以包括空格),我需要找出它们在一大段文本中出现的次数。最快的方法是什么?
我目前的想法如下:
- 将关键字变成后缀树
- 遍历节点后面的文本,只要后缀树中没有出现字符(即 node->next == NULL),就跳到下一个单词并再次搜索
后缀树结构看起来像这样:
struct node {
int count; //number of occurences (only used at leaf node)
/* for each lower-case char, have a pointer to either NULL or next node */
struct node *children[26];
};
我确信有一种更快的方法可以做到这一点,但它是什么?对于这种情况,空间效率并不是什么大问题(因此子数组可以更快地查找),但时间效率确实很重要。有什么建议吗?
【问题讨论】:
标签: c++ c performance algorithm search