高效过滤文本字符串中的单词

时间:2011-12-07 16:19:41

标签: c++ string algorithm parsing

当人们在文本字段中键入文本时,在将其添加到文本框(用于聊天)之前,有一些我想要查找和过滤的单词。这包括它们不是空间拼接的例子,太空船中的单词空间。

通常使用哪种算法来达到这种目的?

我能想到的唯一算法是迭代每个单词的文本:

for each word to filter
for each char in string
if the substring from index of the first letter of word to the current index == word, do something with the word
end for each
end for each

有更好的,更多的O(n)方法吗?

由于

3 个答案:

答案 0 :(得分:1)

Tries几乎可以用于此问题。

答案 1 :(得分:0)

  

通常使用哪种算法来达到这种目的?

正则表达式。如果您使用RE2,则会遇到最坏情况的O( n )匹配。您需要匹配(space ?ship|chocolate ?mousse)

之类的内容

答案 2 :(得分:0)

基本上,您正在尝试在目标字符串中搜索一组输入字符串。您可以使用这些算法

  1. Rabin–Karp algorithm
  2. Aho–Corasick string matching algorithm
  3. 但是为了保持用户的打字速度,一个简单的正则表达式替换也可以。