数据结构学习笔记(Ⅳ):串

目录

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数组

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值