您的位置:首页 > 其它

一般的模式匹配算法(求子串位置)

2015-08-23 09:29 288 查看
//一般的模式匹配算法

#include<stdio.h>

int Index (char *s , char *t , int pos );//返回子串t在主串s中第pos个字符之后的位置(包括pos),不存在返回-1 ;
int main (){
int p ;
p = Index ("123451234" ,"1234" , 0);
printf ("%d ",p);
return 0;
}

int Index (char *s , char *t , int pos ){

char *c ;
int i ,j;
int s_l,t_l;

for (i=0 , c = s ;*c ; i++,c++);
s_l = i ;
for (i=0 , c = t ;*c ; i++,c++);
t_l = i ;

if (s_l<t_l)
return -1 ;

i = pos ;
j = 0 ;
while (i<s_l && j <t_l){

if (s[i]==t[j]){
i++ ;
j ++ ;
}else {
i = i-j+2 ;
j = 0 ;
}
}
if (j >= t_l)
return i-t_l ;
else
return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: