字符串的模式匹配是一个比较经典的问题:假设有一个字符串S,称其为主串,然后还有一个字符串T,称其为子串。
现在要做的是,从主串S当中查找子串T的位置,如果存在返回位置值,如果不存在返回-1。另外主串又称为目标串,
子串称为模式串。
暴力匹配算法
这是一个经典的串匹配问题,涉及的算法也比较多,先讨论第一种简单的暴力算法,思路如下
将主串S的第pos个字符 与 子串T的第一个字符比较, 若相同,继续比较子串和主串后面的字符。
若不相同,那么从主串S的第(pos + 1)个字符开始继续向后匹配,直到匹配到主串的(S.len - T.len)的位置为止
匹配成功返回索引值,匹配失败返回-1,下面是实现代码
#include <stdio.h>
#include <stdlib.h>
#define OK 1
typedef int Status;
typedef struct {
char *data;
int len;
}String;
Status initString(String *T){
T->data = NULL;
T->len = 0;
return OK;
}
Status strAssign(String *T,char *str){
if(T->data)free(T->data);
int i=0,j;
while(str[i]!='