4.2.1 朴素匹配算法
子串:主串中一定存在
模式串:想尝试在主串中寻找的串,未必存在
串的模式匹配:在主串中找到与模式串相同的子串,并返回其所在位置
(1)基本操作实现模式匹配
Index(S,T):定位操作。若主串S中存在与串T值相同的子串,则返回它在主串S 中第一次出现的位置;否则函数值为0
//用Sub返回串S的第pos个字符串起长度为len的子串
bool SubString(SString,&Sub,SString S,int pos,int len){
//子串范围越界
if(pos+len-1>S.length)
return false;
for(int i=pos;i<pos+length;i++)
Sub.ch[i-pos+1]=S.ch[i];
Sub.length=len;
return true;
}
//若主串S中存在与串T值相同的子串,则返回第一次出现的位置,否则为0
int Index(SString S,SString T){
int i=1,n=StrLength(S),m=StrLength(T);
SString sub;
while (i<=n-m+1){
SubString(sub,S,i,m);
if(StrCompare(sub,T)!=0) ++i;
else return i; //返回子串在主串中的位置
}
return 0; //S中不存在与T相等的子串
}
(2)朴素模式匹配算法
即简单模式匹配算法