一尘不染

文本中多个单词匹配的算法

algorithm

我有很多单词(大约10,000个),我需要确定这些单词中是否有一个出现在给定的文本块中。

是否有比在文本块中对每个单词进行简单文本搜索更快的算法?


阅读 396

收藏
2020-07-28

共1个答案

一尘不染

将10,000个单词输入到哈希表中,然后检查文本块中的每个单词(如果其哈希值都有条目)。

尽管我不知道,但是更快,只是另一种方法(取决于您搜索的单词数)。

简单的perl示例:

my $word_block = "the guy went afk after being popped by a brownrabbit";
my %hash = ();
my @words = split /\s/, $word_block;
while(<DATA>) { chomp; $hash{$_} = 1; }
foreach $word (@words)
{
    print "found word: $word\n" if exists $hash{$word};
}

__DATA__
afk
lol
brownrabbit
popped
garbage
trash
sitdown
2020-07-28