码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数据结构学习笔记(Ⅳ):串


    目录

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

     

     

  • 相关阅读:
    动态代理IP怎么设置?动态代理IP有哪些应用场景?
    SpringCloud 三种服务调用方式,你学会了吗?
    访问控制列表ACL讲解——想偷偷访问数据,我ACL可不同意
    【Java】常用的文件操作
    【面试题】js 问号(?)的强大之处,你知道吗??
    Unity InputField宽度自适应内容
    Part17:Pandas的数据转换函数--map、apply、applymap
    从负载均衡到路由,微服务应用现场一键到位
    用Jmeter进行接口自动化测试的工作流程你知道吗?
    【elasticsearch】使用自建证书搭建elasticsearch8.0.1集群
  • 原文地址:https://blog.csdn.net/m0_49939117/article/details/128032636
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号