您的位置:首页 > 其它

KMP模板

2014-06-16 21:56 148 查看
text作为文本串,pat作为模板串,nxt作为失配函数
求失配边的过程,是模板串用自己匹配自己的过程。
匹配的过程,从两个串的第一个元素开始尝试匹配,如果当前位置匹配成功或者在失配
的情况下退无可退,则同时前进一个单位,否则沿着失配边走。
char text[maxn],pat[maxn];int nxt[maxn];void get_next(char *s){int i=0,j=-1,len=strlen(s);nxt[0]=-1;while(i<len){       	 	if(j==-1||s[i]==s[j]) 		 {   		 	i++;   			 j++;      			nxt[i]=j;   		 } 		 else    			j=nxt[j];}}int kmp(){int len1=strlen(text),len2=strlen(pat);int i=1,j=0;while(i<len1&&j<len2){ 	 	if(c6afj==-1||text[i]==pat[j])     		{   			 i++,j++;    		}        	else   			 j=nxt[j];}   	if(j>=len2) return i-len2;else return -1;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: