串:串是由零个货多个字符组成的有限序列,又名字符串。一般记为s="a1a2a3……an"(n>=0),其中,s是串的名称,用双引号括起来的字符序列是串的值。注意双引号不属于串的内容。串中的字符数目n称为串的长度。零个字符的串称为空串。
串中最重要的操作当属串的定位操作(子串的定位操纵通常称为串的模式匹配)
首先我们使用朴素的模式匹配算法:
算法描述:(这个很好理解,绘个图就很清楚了)
(1)有一个主串和一个子串,要在主串中查找子串。
(2)定义两个变量i,j,i指向主串,j指向子串。
(3)i指向主串第一个字母并于子串进行比较,如果不同,i就退到刚才位置的下一个。
(4)如果子串走到中间又不符合了,则主串的i退到刚才位置的下一个,子串j退到0重新开始。
代码示例如下:
int BF(const char *s,const char *sub,int pos)
{
assert(s!=NULL && sub!=NULL);
int lens = strlen(s);
int lensub = strlen(sub);
if(pos<0 || pos>=lens