当前课程知识点:数据结构(下) > 第十一章 串(上) > (a)ADT > 11a-2: 术语
为了便于接下来的讨论
我们首先来统一关于串的一些术语和记法
一般地 如果一个名为S的字符串 由n个字符构成
我们就将所有的字符 从前至后 编号为0至n-1
并按照我们的惯例 记作S[0,n)
而串中秩为k的字符 也相应地记作S[k]
于是我们就可以定义 什么叫做两个字符串相等
有两个条件 首先是它们的长度相等
其次 所有的字符 也必须捉对地相等
也就是说 二者必须一模一样
接下来的一个重要概念是子串 sub-string
对于任何一个字符串S而言
由i和k所指定的那个子串 也就是从秩为i的那个字符开始 连续的k个字符
以这幅图为例
如果整体为字符串S 那么这里所指的子串 也就是其中的这样一段
可以看到 其中字符的秩 介于i与i+k之间
接下来 所谓的前缀 prefix 是子串的一个特例
具体来说 所谓长度为k的前缀 也就是起始于首字符的前k个字符
对称地 我们也可以定义所谓的后缀 suffix
具体地 所谓长度为k的后缀 也就是终止于末元素的最靠后的k个字符
不难验证 所谓起始于i 长度为k的子串
也就是在长度为i+k的前缀中 长度为k的后缀
当然 这些定义中所涉及的所有参数 都是合法的
为了节省时间 我们将不再每次都专门地对此作说明
当然 有一种边界情况在此需要专门说明
也就是说 串长n有可能是0
此时 我们也称之为空串
请注意 空串与由空格组成的串 并不是一回事儿
空串 有别于其他各种串的特征 就是它的长度为0
为了简化后续的讨论 我们不妨在此统一约定
空串是任何串的子串 也是任何串的前缀与后缀
同时 作为另外一种边界的情况
我们也统一约定 任何串也是它自身的子串 以及前缀和后缀
反过来 长度严格小于原串的子串、前缀与后缀 也称作真子串、真前缀与真后缀
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-OJ系统说明
--关于OJ
--1-注册与登录
--2-界面与选课
--3-提交测试
-关于课程教材与讲义
--课程教材与讲义
-关于讨论区
--关于讨论区
-微信平台
--html
-PA晋级申请
--PA晋级
-(a)概述
--07A-1 纵览
--07A-5 接口
-(a)概述--作业
-(b1)BST:查找
-第七章 二叉搜索树--(b1)BST:查找
-(b2)BST:插入
-(b2)BST:插入--作业
-(b3)BST:删除
-第七章 二叉搜索树--(b3)BST:删除
-(c)平衡与等价
-(c)平衡与等价--作业
-(d1)AVL树:重平衡
-第七章 二叉搜索树--(d1)AVL树:重平衡
-(d2)AVL树:插入
-(d2)AVL树:插入--作业
-(d3)AVL树:删除
-(d3)AVL树:删除--作业
-(d4)AVL树:(3+4)-重构
-(d4)AVL树:(3+4)-重构--作业
-本章测验
--章节测验
-(a1)伸展树:逐层伸展
--习题
-(a2)伸展树:双层伸展
--习题
-(a3)伸展树:算法实现
--习题
-(b1)B-树:动机
--习题
-(b2)B-树:结构
--习题
-(b3)B-树:查找
--习题
-(b4)B-树: 插入
--习题
-(b5)B-树: 删除
--习题
-(xa1)红黑树:动机
--习题
-(xa2)红黑树:结构
--习题
-(xa3)红黑树:插入
--习题
-(xa4)红黑树:删除
-本章测验
--习题
-(b)散列:原理
--09B-3 数组
--09B-4 原理
--09B-5 散列
--09B-6 冲突
--习题
-(c)散列:散列函数
--习题
-(d1)散列:排解冲突(1)
--习题
-(d2)散列:排解冲突(2)
--习题
-(e)桶/计数排序
--习题
-本章测验
--本章测试
-(a1)需求与动机
--习题
-(a2)基本实现
--习题
-(b1)完全二叉堆:结构
--习题
-(b2)完全二叉堆:插入与上滤
--习题
-(b3)完全二叉堆:删除与下滤
--习题
-(b4)完全二叉堆:批量建堆
--习题
-(c)堆排序
--习题
-(xa1)左式堆:结构
--习题
-(xa2)左式堆:合并
--习题
-(xa3)左式堆:插入与删除
-本章测验
--本章测试
-(a)ADT
--习题
-(b1)串匹配
--习题
-(b2)蛮力匹配
--习题
-(c1)KMP算法:从记忆力到预知力
--习题
-(c2)KMP算法:查询表
--习题
-(c3)KMP算法:理解next[]表
--习题
-(c4)KMP算法:构造next[]表
--习题
-(c5)KMP算法:分摊分析
--习题
-(c6)KMP算法:再改进
-(d1)BM_BC算法:以终为始
-(d2)BM_BC算法:坏字符
-(d3)BM_BC算法:构造bc[]
-(d4)BM_BC算法:性能分析
-(e1)BM_GS算法:好后缀
-(e2)BM_GS算法:构造gs表
-(e3)BM_GS算法:综合性能
-(f1)Karp-Rabin算法:串即是数
-(f2)Karp-Rabin算法:散列
-本章测验
--本章测试
-(a1)快速排序:算法A
-- 12a1-5: 实例
--习题
-(a2)快速排序:性能分析
--习题
-(a4)快速排序:变种
-(b1)选取:众数
-(b3)选取:通用算法
--习题
-(c1) 希尔排序:Shell序列
--习题
-(c2)希尔排序:逆序对
-本章测验
--本章测试