第四章 字符串、数组和特殊矩阵
4.1字符串
- 字符串是由0个或多个字符构成的有限序列。
- 串中所含字符串的个数n称为字符串的长度;当n=0时。字符串为一空串
- 两个字符串相等,当且仅当两个串的长度相等,并且各个对应位置的字符都相等。
- 若S=“ ”,此时s由一个空格字符组成,其长度为1,它不等价于空串,因为空串的长度为0.
字符串是一种特殊的线性表,由于线性表有顺序存储和链式存储两种基本的存储结构,因此字符串也有两种基本的存储结构:顺序串和链式串
4.2字符串的模式匹配
寻找字符串p在字符串t中首次出现的位置称为字符串的匹配模式,其中,称p为模式,t为正文,t的长度远远大于p的长度。
4.2.1朴素的模式匹配算法
基本思想:用p中的每个字符去与t中的字符一一比较,其中,n代表正文t的长度,m为模式p的长度。如果t1=p1,t2=p2,…,tm=pm,则模式匹配成功,此时返回起始位置即可;否则,将p向右移动一个字符串的位置,重新开始比较。(就是一个一个比较,比较不到再找下一个)。
时间复杂度为O(n*m)
算法如下:
int index(seqstring p,seqstring t)
{
int i,j,succ;
i=0;succ=0 /*用i扫描正文t,succ为匹配成功的标志*/
while(