现在做一个算法,要实现多模式匹配。
不知道有没有人研究过,可不可以给我讲讲。
我现在基本实现了功能,但是我的代码中有太多的循环,和判断,效率不好。
我的做法是:
假设 qstr 是要搜索的字符串,*pstr[]是所有模式组成的数组,
找出模式中长度最短的,假设它的长度是 m,计算出一共有多少关键字 n
第一次从qstr的最左边读出m 个数据,做了个n重的循环判断*(qstr+m)和关键字的关系,
if(*(qstr+m)==关键子第m个位置上的数据)
{
从qstr开始向后便利,遇到不等就return, -------①
如果qstr的移动步数已经=关键字的程度是,表示匹配了,
}
if (*(qstr)是关键字的子集)
{
找到*(qstr)在关键字中的位置 x ,从qstr+x 开始继续向后搜索)步骤与①相似
}
继续读M个数据,一直到qstr的结束。
我在里面用到了好多循环,判断。我在网上看到不少的算法是要建立辅助表,或树什么的。
本人就回链表,但不知道怎么和这个算法结合。
不知道有没有高手指点指点,谢谢。
----------------解决方案--------------------------------------------------------