当前课程知识点:数据结构(下) > 第十一章 串(下) > (f1)Karp-Rabin算法:串即是数 > 11f1-3: 串亦是数
既然万事万物的本源都对应于自然数
那么串也自然应该对应于数
接下来我们就来看看
这句话如何兑现
首先来考虑一种我们最为熟悉的串
也就是由10进制数字所构成的串
比如 由阿拉伯数字所构成的这样一个串
如果我要说这个串是一个自然数
我想你不会有任何异议的
没错 这正是我们最常用的技术方法
那么 一般的串呢
你应该还记得我们的约定
组成字符串的每一个字符
都来自于事先约定的某个字母表
而在这里 字母表的规模又是至关重要的
如果将它记作d
那么字母表中的所有字符也就可以按照任何一种次序 与0与d-1之间的整数一一对应了
于是 基于这个字母表所建立起来的任何一个字符串
都可以视作为一个d进制的自然数
不妨考察 以26个大写英文字母所构成的字符集
于是 由大写字母所构成的任何一个英文单词
也必然对应于某个26进制的自然数
比如在单词CAT中
C对应的编号为2
A对应于0
而T对应于19
如果你关心这个数字的具体数值
不妨借鉴一下我们在第4章所给出的进制转换算法
不过 这个方法还存在一点小小的瑕疵
好在修补这个瑕疵并不困难
这一任务 不妨由你在课后独立地来完成
既然每一个串都可以对应于一个自然数
那么接下来很自然地
一个模式串
在某个主串中能够出现
仅当这个子串在数值上与模式串相等
请注意 经过这样的视角转换
我们已经在无形中
将串与串的比对
转化为了整数与整数的比对
也就是说 串与串之间的比对将有望在常数的时间内完成
果真如此
以上也就自然给出了一个串匹配的算法
的确如此
我们已经朝着这个方向迈出了最重要的一步
尽管我们还需要做更多细致的工作
-选课之前
--写在选课之前
--宣传片
-考核方式
--考核方式
-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)希尔排序:逆序对
-本章测验
--本章测试