码农知识堂 - 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数组

     

     

  • 相关阅读:
    利用Paddle OCR进行文字识别
    快速掌握Zookeeper及Java API
    UUCTF WP
    携程apollo配置中心服务端如何感知配置更新?
    Java学习之多态一
    基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板
    【Python/Pytorch 】-- SVM算法
    xss跨站,订单,shell箱子反杀记
    vlcplayer for android 源码编译log打印
    [Android]修改应用包名、名称、版本号、Icon以及环境判断和打包
  • 原文地址: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号