目录
串(S='abcdef...' )就是字符串,是由零或多个字符组成的有限序列。
子串是串中任意连续的字符组成的子序列,主串是包含子串的串。
串中的位置从1开始。
·静态数组
·动态数组
定义串的地址指针,在堆区开辟内存空间
·求子串
·比较操作
·定位操作
模式串:不一定在主串中的串。
串的模式匹配:在主串中寻找与模式串相同的子串
若模式串长度m,主串长度n,则最好时间复杂度为O(m),最坏时间复杂度为O(nm)
朴素模式匹配算法缺点:当某子串与模式串部分匹配,主串的扫描指针会回溯,导致时间开销增加。
主串指针不回溯,模式串指针回溯
串的前缀:包含第一个字符,且不包含最后一个字符的子串
串的后缀:包含最后一个字符,且不包含第一个字符的子串
当第j个字符匹配失败,由前1~j-1个字符组成的串记为S
next[j] = S的最长相等前后缀长度 + 1,next[1] = 0
设模式串为'ababaa'
序号j | 1 | 2 | 3 | 4 | 5 | 6 |
模式串 | a | b | a | b | a | a |
next[j] | 0(固定) | 1(固定) | 1 | 2 | 3 | 4 |
对next数组进行优化得到nextval数组