《大话数据结构》--- 第五章 串

串是由零个或多个字符组成的有限序列,幽冥教字符串。一般记作 a = "aaaaaa";串中的字符数目n称为串的长度。零个字符的串称为空串。

 
空格串是只包含空格的串。空格串有内容有长度。
串中任意个数的连续字符组成的子序列称为该串的子串。包含子串的串称为主串。
子串在住串中的位置就是子串的第一个字符在主串中的序号。
 
串可以比较大小。串的比较是通过串的字符之间的编码比较的。即ASCII码。
子串的定位操作通常称为串的模式匹配。
 
KMP模式匹配算法。
简单理解。比较a串中是否有b串。匹配中找到a串与b串相等的字符。本次匹配结束后如果不成功,那么a串中这个字符与到匹配失败字符中间的这段距离是不需要遍历的。在一个串中有相同字符时,需要考虑到一个数组next的。即相同字符的下标差值存储的数组。
abcabx
当 n = 1时, next[1] = 0;
n = 2时,next[2] = 1;
n = 3时,next[3] = 1;
n = 4时,next[4] = 1;
n = 5时,存储前4个字符的串中,前缀字符与后缀字符相等,前缀字符与后缀字符中间包含了两个字符,所以next[5] = 2;
上一个差值也可能是一个之前相同的小串与小串的距离
n = 6时,由于前缀字符与前缀字符的后一个字符和后缀字符与后缀字符的前一个字符相等,所以差值+1,next[6] = 3;
 
本算法需要开单章详细理解。
原文地址:https://www.cnblogs.com/colve/p/5125503.html