提示:以下是本篇文章正文内容
串(string)是由零个或多个字符组成的有限序列
子串:串中任意个连续的字符组成的子序列
主串:包含子串的串
空串:0个字符的串
子串的位置:子串的第一个字符在主串中的序号
S = "abcd123" T1 = "abcd" T2 = "abcd124" T1是S的子串,T2不是S的子串,T1位置在S中为0
串的顺序存储结构是用一组地址连续的存储单元来存储串中的字符序列的
对应串的链式存储结构,与线性表是相似的,但是由于串的结构的特殊性,结构中的每个元素数据是一个字符,就会存在很大的浪费空间。
因此,一个结点可以存储多个字符,若最后一个结点没有被占满,可以用"#"或者其他非串值字符代替补全
模式匹配:给定主串S= "s1s2s3…sn"和模式串T= “t1t2t3…tn”,在S中寻找T的过程称为模式匹配。如果匹配成功,返回T在S中的位置;如果匹配失败,返回-1。
BF算法,即暴力(Brute Force)算法
基本思想:从主串S的第一个字符开始和模式串T的第一个字符进行比较,若相等,则继续比较两者的后续字符;否则,从主串S的第二个字符开始和模式T的第一个字符进行比较,重复上述的过程,直到T中的字符全部比较完毕,则说明本趟匹配成功;或者S中的字符全部比较完,则说明匹配失败。
当模式串T与主串S匹配不成功时,主串S和模式串T要进行回溯,模式串T中 j=0主串S中i=i-j+1
BF算法时间性能比较低,因为在每趟匹配不成功时存在大量的回溯,没有利用已经部分匹配的结果,在匹配不成功时主串不进行回溯,模式串需要向右滑动一段距离----KMP算法,可以大大避免重复遍历的情况。
提示:这里对文章进行总结: