字符串(串)

字符串的相关概念和模式匹配算法。

Posted by Sunny on 2024-11-09
Words 378 and Reading Time 1 Minutes
Viewed Times

字符串(串)

串(string)是由零个和多个字符组成的有限序列,一般记为:

前缀:字符串的前缀指除了最后一个字符之外的所有头部子串(是一个集合)。例如,字符串’abcde’的前缀是{a, ab, abc, abcd},字符串’a’的前缀是{}。\
后缀:字符串的后缀指除了第一个地租之外的所有尾部子串。例如,字符串’abcde’的后缀是{e, de, cde, bcde},字符串’a’的后缀是{}。\
部分匹配值:字符串的前缀和后缀的最长相等前后缀长度。例如,字符串’abcde’的部分匹配值为0,因为不存在前缀和后缀相等的情况。

串的存储结构

  1. 定长顺序存储表示
  2. 堆分配存储表示
  3. 块链存储表示:类似于线性表的链式存储结构,每个结点称为块,所以链表称为块链结构。和线性表的链式存储结构不同的是,每个块可以存储多个字符。

串的模式匹配

串的模式匹配:子串的定位操作,它通常求的是子串(substring),也称为模式串,在主串中的位置。

暴力匹配法

双重循环,假设主串长度为$n$,模式串长度为$m$,暴力匹配法时间复杂度为$O(mn)$。

KMP算法

KMP算法分为两部分:

  1. 计算模式串$T$的错位部分匹配值数组$next$。
  1. KMP匹配算法。