866数据结构笔记 - 第四章 串

 湖大计学考研系列文章目录


目录

重点内容

一、基本概念

二、next数组计算

参考(具体细节见原文)


重点内容

        虽然串并不在866数据结构的大纲中,但据说在前几年的考研真题中出现过选择题,所以有时间的情况下建议掌握next数组和nextval数组的计算。我估计撑死考一个选择题,大题应该不可能,选择题考点就是next数组和nextval数组的计算。

  1. next数组和nextval数组计算

一、基本概念

  • 模式匹配:子串的定位操作称为串的模式,它求的是子串(常称模式串)在主串中的位置。
  • 朴素模式匹配:最差时间复杂度为O(mn),其中m是主串长,n是模式串长。
  • KMP算法平均时间复杂度O(m+n)。
  • 串前缀:包含第一个字符,且不包含最后一个字符的字串。
  • 串后缀:包含最后一个字符,且不包含第一个字符的字串。

二、next数组计算

        若第j个字符匹配失败,由前1~j-1个字符组成的串记为S,next[j]=S最长相等前后缀长度+1,特别地,next[1]=0

        关于next数组的计算可以参考这篇博客算法:next数组的求法详解

        nextval数组计算:串——求解next数组和nextval数组 - 简书 (jianshu.com)

// nextval数组的求法
// 1.先算出next数组
// 2.令nextval[1]=0

for (int j = 2; j <= T.length; j++){
    if (T.ch[next[j]] == T.ch[j])
        nextval[j] = nextval[next[j]];
    else
        nextval[j] = next[j];
}

参考(具体细节见原文)

参考书目:

  1. 王道:《数据结构》
  2. 湖大本科: 《数据结构与算法分析( C++版)(第三版)》Clifford A. Shaffer 著,张铭、刘晓丹等译。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前世忘语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值