高效的字符串查找函数
char *base = "...";//被查找字符串,长度1-10K
char *str[50] = {"aac", "p12", ...};//共有50个待查找字符串
bool find1()
{
for (int i = 0; i < 50; i++)
{
if (strstr(base, str[i])) return true;
}
}
bool find2()
{
for (int i = 0; i < 50; i++)
{
if (comp(base, str[i])) return true;//comp是自写的查找函数
}
}
find2的效率比find1高一些。但无论find1还是find2,每次要执行50轮的查找,效率远远不能满足要求。
不得已,向各位寻求一些算法思路。
主要任务就是,在一个长度大约几K到几十K的字符串中(注意这个字串是动态输入的),查找匹配大约50个字串(这些字串是静态的)。目前想到的利用第三方的正则库,或者用前缀数组或后缀数组之类实现。大家谈谈经验吧。