[问题描述
给定一个自串,要求找出某个字符串中该子串的第一次出现的位置。
[实验目的]
(1) 深入理解字符串模式匹配算法的特性。
(2)掌握KMP(快速匹配算法)的求解方法。
[实验内容及要求]
(1)给定子串P以及待查找的字符串T。
(2)掌握匹配中出现不等时,P右移的位数和开始比较的字符位置的求解方法。
(3)请求解naxt函数值和nextval函数值进行调用。
[测试数据]
#include "stdio.h"
int f(char *s, char *a)
{
int ls,la,i;
int flag = -1;
ls = strlen(s);
la = strlen(a);
if (la > ls) return -1;
for (i=0;i<=ls-la;i++){
if (strncmp(s+i,a,la)==0) return i;
}
return flag;
};
void main()
{
char s[]="abcd1234xyz";
char a[]="xy";
int i;
i = f(s,a);
if (i < 0) printf("No match\n"); else printf("Location %d\n",i);
}