我有一個包含約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