数据结构学习笔记(Ⅳ):串
创始人
2024-02-14 19:22:07
0

目录

1 串

1.1 定义与基本操作

1.定义

2.基本操作

1.2 串的存储结构

1.顺序存储

2.链式存储

3.基于顺序存储实现基本操作

2 串的朴素模式匹配算法

2.1 朴素模式匹配算法

2.2 KMP算法

1.优化思路

2.计算next数组

2.3 KMP算法优化


1 串

1.1 定义与基本操作

1.定义

串(S='abcdef...' )就是字符串,是由零或多个字符组成的有限序列。

子串是串中任意连续的字符组成的子序列,主串是包含子串的串。

串中的位置从1开始。

2.基本操作

1.2 串的存储结构

1.顺序存储

·静态数组

·动态数组

定义串的地址指针,在堆区开辟内存空间

2.链式存储

 

3.基于顺序存储实现基本操作

·求子串

·比较操作 

·定位操作 

2 串的朴素模式匹配算法

2.1 朴素模式匹配算法

模式串:不一定在主串中的串。

串的模式匹配:在主串中寻找与模式串相同的子串

若模式串长度m,主串长度n,则最好时间复杂度为O(m),最坏时间复杂度为O(nm)

朴素模式匹配算法缺点:当某子串与模式串部分匹配,主串的扫描指针会回溯,导致时间开销增加。

2.2 KMP算法

1.优化思路

主串指针不回溯,模式串指针回溯

2.计算next数组

串的前缀:包含第一个字符,且不包含最后一个字符的子串

串的后缀:包含最后一个字符,且不包含第一个字符的子串

当第j个字符匹配失败,由前1~j-1个字符组成的串记为S

next[j] = S的最长相等前后缀长度 + 1,next[1] = 0

设模式串为'ababaa'

序号j123456
模式串ababaa
next[j]0(固定)1(固定)1234

2.3 KMP算法优化

对next数组进行优化得到nextval数组

 

 

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...