level 8
取这个名字真难
楼主
请问下面这个字符串匹配算法叫什么名字?
# include <stdio.h>
# include <string.h>
int time=0;
//计算运算次数
int match(char a[],char b[],int la,int lb)
{
int l,s,s1,j;
for(j=0;j<=la-lb;j++)
{
s=j;
l=lb-1;
s1=0;
time++;
//原串与目标对应位置字符比较
//对应为匹配成功后a后移,b后移,b串长l-2,若b串长度<=0时匹配成功,返回对应位置
while(a[s]==b[s1]&&a[s+l]==b[l+s1])
{
s++;
s1++;
l-=2;
time++;
if(l<=0)
return j+1;
}
}
return -1;
}
int main()
{
char a[100],b[10];
int la,lb,s;
printf("请输入原字符串:");
scanf("%s",a);
printf("请输入目标字符串:");
scanf("%s",b);
//测a,b串长度
la=strlen(a);
lb=strlen(b);
//返回目标串位置
s=match(a,b,la,lb);
if(s>=0)
printf("目标字符串位置为:%d。",s);
else
printf("未发现目标字符串。");
printf("\n运行%d次。\n",time);
return 0;
}
2017年01月23日 10点01分
1
# include <stdio.h>
# include <string.h>
int time=0;
//计算运算次数
int match(char a[],char b[],int la,int lb)
{
int l,s,s1,j;
for(j=0;j<=la-lb;j++)
{
s=j;
l=lb-1;
s1=0;
time++;
//原串与目标对应位置字符比较
//对应为匹配成功后a后移,b后移,b串长l-2,若b串长度<=0时匹配成功,返回对应位置
while(a[s]==b[s1]&&a[s+l]==b[l+s1])
{
s++;
s1++;
l-=2;
time++;
if(l<=0)
return j+1;
}
}
return -1;
}
int main()
{
char a[100],b[10];
int la,lb,s;
printf("请输入原字符串:");
scanf("%s",a);
printf("请输入目标字符串:");
scanf("%s",b);
//测a,b串长度
la=strlen(a);
lb=strlen(b);
//返回目标串位置
s=match(a,b,la,lb);
if(s>=0)
printf("目标字符串位置为:%d。",s);
else
printf("未发现目标字符串。");
printf("\n运行%d次。\n",time);
return 0;
}