약 50 개의 키워드와 약 50000 개의 문자열 목록이 있습니다. 적어도 하나의 키워드가 포함되어 있으면 모든 문자열을 확인합니다. 일치하는 키워드 또는 일치하는 키워드의 수에 관심이 없습니다. 가능한 한 빨리 "진정한"또는 "거짓"만을 원합니다.문자열에 주어진 배열에 문자열이 포함되어 있는지 알아내는 빠른 알고리즘
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
좋습니다.하지만 해결 방법은 두 곳에서 똑같은 명제입니다 (이 경우 일치하는 항목이 발견되면 다시 돌아 오기 위해 변경)? –
아, 끝날 때까지 읽어야 했어. 나는 네가 옳다고 생각한다. 나는 하나의 키워드가 발견 된 후에 돌아 오도록 알고리즘을 수정할 수있다. 이후 키워드 트리를 작성해야하므로 매우 빠른 솔루션이어야합니다. – VVS