我有一个包含约50个关键字和约50000个字符串的列表。我检查每个字符串是否包含至少一个关键字。我对匹配关键字或匹配关键字的数量不感兴趣。我只想要尽可能快地回到“真”或“假”的位置。查找字符串是否包含给定数组中的任何字符串的快速算法
所以,我敢打赌,有一个算法,在那里,远远胜过我目前的LINQ版本:
class MyEnumerableExtension
{
public static bool ContainsAny(this string searchString, IEnumerable<string> keywords)
{
return keywords.Any(keyword => searchString.Contains(keyword))
}
}
bool foundAny = "abcdef".ContainsAny(new string[] { "ac", "bd", "cd" });
不,我有两个不同的问题,一个是在给定关键字列表中查找包含任何关键字的所有字符串;另一个是使用另一个关键字标记这些找到的字符串关键字列表。这些列表不同,目的不同。 – VVS 2010-11-18 13:47:58
好的,但解决方案在两个地方都是相同的algorthm(在这种情况下,一旦找到一个匹配项就会返回)。 – 2010-11-18 13:53:13
哎呦,我应该读直到结束。我认为你是对的,我可以修改算法,找到一个关键字后返回。因为我只需要构建关键字树,这应该是一个非常快速的解决方案。 – VVS 2010-11-18 13:53:51