串的模式匹配改进--KMP算法
2012-10-18 16:11
169 查看
改进之处:每当匹配过程中出现相比较的字符不相等时,不需要回溯主串的字符位置指针,而是利用已经得到的“部分匹配”结果,将模式串向右“滑动”尽可能远的距离,再比较。(尽可能远的距离根据模式串next函数确定)
//模式串next说明:比如“abababb”,next[]={-1,0,0,1,2,1,2}
s为主串,p为关键字
//模式串next说明:比如“abababb”,next[]={-1,0,0,1,2,1,2}
s为主串,p为关键字
void Get_next(char *p,int next[]) { int i,j,slen; slen=strlen(p);i=0; next[0]=-1;j=-1; while(i<slen) { if(j==-1||p[i]==p[j]){++i;++j;next[i]=j;} else j=next[j]; } } int Index_KMP(char *s,char *p,int pos,int next[]) { int i,j,slen,plen; i=pos-1; j=-1; slen=strlen(s); plen=strlen(p); while(i<slen&&j<plen) { if(j==-1||s[i]==p[j]){++i;++j;} else j=next[j]; } if(j>=plen) return i-plen; else return -1; }
相关文章推荐
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- KMP算法----模式匹配的一种改进算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 改进的模式匹配算法——KMP算法
- 模式匹配的一种改进算法----KMP算法
- 改进的模式匹配算法——KMP算法