私は約50個のキーワードと約50000個の文字列のリストを持っています。少なくとも1つのキーワードが含まれている場合は、すべての文字列をチェックします。一致したキーワードや一致するキーワードの数には関心がありません。私はできるだけ早く "真の"または "偽の"バックだけを望んでいます。文字列に指定された配列に文字列が含まれているかどうかを調べるための高速アルゴリズム
だから、私ははるかに私の現在の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" });
私は2つの別々の懸念事項があります:1つは、指定されたキーワードのリスト内のキーワードを含むすべての文字列を見つけることです。もう1つは、キーワードリストこれらのリストは異なっており、目的が異なります。 – VVS
OKですが、この解決策は両方の場所で同じ威力を発揮します(この場合、1つの一致が見つかると復帰するように変更されています)。 –
おっと、私は最後まで読んでいたはずです。私はあなたが正しいと思う、私は単一のキーワードが見つかった後に戻るアルゴリズムを変更することができます。私は非常に高速な解決策になるはずです。 – VVS