当前位置: 首页 > news >正文

【数据结构】考研真题攻克与重点知识点剖析 - 第 4 篇:串

前言

  • 本文基础知识部分来自于b站:分享笔记的好人儿的思维导图与王道考研课程,感谢大佬的开源精神,习题来自老师划的重点以及考研真题。
  • 此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析,本人技术有限,最终数据清洗结果不够理想,相关CSDN文章便没有发出。

(考研真题待更新)

欢迎订阅专栏:408直通车

请注意,本文中的部分内容来自网络搜集和个人实践,如有任何错误,请随时向我们提出批评和指正。本文仅供学习和交流使用,不涉及任何商业目的。如果因本文内容引发版权或侵权问题,请通过私信告知我们,我们将立即予以删除。

文章目录

  • 前言
  • 第四章 串
    • 串的定义与实现
      • 概念
        • 小结
      • 串的存储结构(和线性表几乎一样,仅将存储数据的类型改为字符)
        • 顺序存储结构
        • 链式存储结构
          • 小结
        • 块链存储结构
    • 串的模式匹配
      • 简单模式匹配算法
      • KMP算法
          • 手算
      • 进一步优化
    • 代码
      • 王道代码见教材
      • 补充代码
  • 考研真题
    • 408 - 2023

第四章 串

串的定义与实现

概念

  • 串的概念

    • 零个或多个任意字符组成的有限序列(内容受限的线性表)
  • 子串的概念

    • 一个串中任意个连续字符组成的子序列(含空串)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述

串的存储结构(和线性表几乎一样,仅将存储数据的类型改为字符)

顺序存储结构

在这里插入图片描述
在这里插入图片描述
char 8bit 0~255

链式存储结构

在这里插入图片描述
在这里插入图片描述

  • 一个结点若只存一个字符,存储密度过低,引出块链存储结构
  • 在这里插入图片描述
  • 在这里插入图片描述
    在这里插入图片描述
小结

在这里插入图片描述

块链存储结构
  • 每个结点既可以存放一个字符,也可以存放多个字符。每个结点称为块

串的模式匹配

简单模式匹配算法

  • 概念在这里插入图片描述

    • 子串的定位操作通常称为串的模式匹配,它求的是子串(模式串)在主串中的位置
  • 算法思想

    • 将主串中与模式串长度相同的子串逐个与模式串匹配,暴力法在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  • 缺点

    • 主串指针回溯导致时间开销,时间复杂度为:O(nm),nm分别为主串和模式串的长度在这里插入图片描述
      在这里插入图片描述

KMP算法

  • 基本概念在这里插入图片描述
    在这里插入图片描述

    • 前缀

      • 除最后一个字符外,字符串的所有头部子串
    • 后缀

      • 除第一个字符外,字符串的所有尾部子串
  • 算法思想

    • 主串指针不必回溯,模式串指针根据next数组部分回溯(如果已匹配相等的前缀序列中有某个后缀正好是模式的前缀,可以将模式串向后滑动到与这些相等字符对齐的位置)
  • next数组

    • 表明当模式中第j个字符与主串中相应字符匹配失败时,在模式中需重新和主串中该字符进行比较的字符位置在这里插入图片描述

      • 即衡量模式串向后滑动的量
    • 计算

      • 在这里插入图片描述

        • 以“abab”为例

          • 序号j = 1时,属于j == 1情况,next[j] = 0

          • 序号j = 2时,‘a’的前后缀都为空集,属于其他情况,next[j] = 1

          • 序号j = 3时,‘ab’的前缀为{a},后缀为{b},交集为空,属于其他情况,next[j] = 1

          • 序号j = 4时,‘aba’的前缀为{a,ab},后缀为{a,ba},交集为{a},k - 1 = 1(长度),next[j] = k = 2(长度+1)

  • 时间复杂度:O(m + n)
    在这里插入图片描述
    在这里插入图片描述

手算
  • 1
    在这里插入图片描述
    在这里插入图片描述

  • 2
    在这里插入图片描述
    在这里插入图片描述

  • 3在这里插入图片描述
    在这里插入图片描述

  • 4在这里插入图片描述
    在这里插入图片描述

  • 5在这里插入图片描述
    在这里插入图片描述

  • 6在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

进一步优化

  • 构造nextval数组
    • 在这里插入图片描述

      • 若模式串指向的位置的字符等于本身,可以直接赋值

      • 举例

        • 5号的a中next数组指向3号位置,3号位置也是a故直接把3号的next数组值复制过去

        • 6号的a中next数组指向4号位置,两者字符不同,不能优化

代码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

王道代码见教材

补充代码

  • cin >> n >> p+1 >> m >> s+1;// char数组s是长文本,p是模式串,且从数组下标1开始存储
    for(int i=2,j=0;i<=n;i++){  //求next数组while(j&&p[i]!=p[j+1]) j=ne[j];if(p[i]==p[j+1]) j++;ne[i]=j;
    }
    for(int i=1,j=0;i<=m;i++){  //匹配while(j&&s[i]!=p[j+1]) j=ne[j];if(s[i]==p[j+1]) j++;if(j==n){j=ne[j];//匹配成功}
    }
    

考研真题

408 - 2023

(考研真题待更新)

相关文章:

【数据结构】考研真题攻克与重点知识点剖析 - 第 4 篇:串

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…...

深入浅出 -- 系统架构之分布式多形态的存储型集群

一、多形态的存储型集群 在上阶段&#xff0c;我们简单聊了下集群的基本知识&#xff0c;以及快速过了一下逻辑处理型集群的内容&#xff0c;下面重点来看看存储型集群&#xff0c;毕竟这块才是重头戏&#xff0c;集群的形态在其中有着多种多样的变化。 逻辑处理型的应用&…...

STL —— list

博主首页&#xff1a; 有趣的中国人 专栏首页&#xff1a; C专栏 本篇文章主要讲解 list模拟实现的相关内容 &#xff11;. list简介 列表&#xff08;list&#xff09;是C标准模板库&#xff08;STL&#xff09;中的一个容器&#xff0c;它是一个双向链表数据结构&#xff0c…...

申请SSL证书

有很多方法可以确保您的网站安全。添加SSL证书可针对恶意攻击提供额外且关键的保护层。 即使网站不接受交易&#xff0c;您仍然需要保护用户的登录详细信息、地址和其他个人信息。 没有SSL证书的网站使用HTTP&#xff08;一种基于文本的协议&#xff09;&#xff0c;这意味着…...

深入浅出 -- 系统架构之负载均衡Nginx环境搭建

引入负载均衡技术可带来的收益&#xff1a; 系统的高可用&#xff1a;当某个节点宕机后可以迅速将流量转移至其他节点。系统的高性能&#xff1a;多台服务器共同对外提供服务&#xff0c;为整个系统提供了更高规模的吞吐。系统的拓展性&#xff1a;当业务再次出现增长或萎靡时…...

notepad++绿色版添加右键菜单

解压路径 D:\Green\notepad_v8.0_x64_绿色版 添加右键菜单.reg 新建nodepad添加右键菜单.reg文件 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\NotePad] "Edit with &Notepad" "Icon""D:\\Green\\notepad_v8.0_x64_绿色版…...

7 个 iMessage 恢复应用程序/软件可轻松恢复文本

由于误操作、iOS 升级中断、越狱失败、设备损坏等原因&#xff0c;您可能会丢失 iPhone/iPad 上的 iMessages。意外删除很大程度上增加了这种可能性。更糟糕的是&#xff0c;这种情况经常发生在 iDevice 缺乏备份的情况下。 &#xff08;iPhone消息消失还占用空间&#xff1f;&…...

DockerFile启动jar程序

1.创建Dockerfile 在项目的根目录下创建一个名为Dockerfile的文件&#xff0c;并使用文本编辑器打开它。Dockerfile的内容如下&#xff1a; # 基础镜像 FROM openjdk:8-jre # 创建目录 RUN mkdir -p /usr/app/ # 设置工作目录 WORKDIR /usr/app # 将JAR文件复制到容器中,注:…...

基于R、Python的Copula变量相关性分析及AI大模型应用

在工程、水文和金融等各学科的研究中&#xff0c;总是会遇到很多变量&#xff0c;研究这些相互纠缠的变量间的相关关系是各学科的研究的重点。虽然皮尔逊相关、秩相关等相关系数提供了变量间相关关系的粗略结果&#xff0c;但这些系数都存在着无法克服的困难。例如&#xff0c;…...

鸿蒙组件学习_Tabs组件

说明 该组件从API Version 7 开始支持。 子组件 仅可包含子组件TabContent 参数 barPosition 设置Tabs的页签位置,默认值: BarPosition.StartStart vertical属性方法设置为true时,页签位于容器左侧;vertical属性方法设置为false时,页签位于容器顶部。End vertic…...

【LangChain学习之旅】—(19)BabyAGI:根据气候变化自动制定鲜花存储策略

【LangChain学习之旅】—(19)BabyAGI:根据气候变化自动制定鲜花存储策略 AutoGPTBaby AGIHuggingGPTLangChain 目前是将基于 CAMEL 框架的代理定义为 Simulation Agents(模拟代理)。这种代理在模拟环境中进行角色扮演,试图模拟特定场景或行为,而不是在真实世界中完成具体…...

thinkphp6入门(21)-- 如何删除图片、文件

假设文件的位置在 /*** 删除文件* $file_name avatar/20240208/d71d108bc1086b498df5191f9f925db3.jpg*/ function deleteFile($file_name) {// 要删除的文件路径$file app()->getRootPath() . public/uploads/ . $file_name; $result [];if (is_file($file)) {if (unlin…...

虚拟内存知识详解

虚拟内存 单片机的 CPU 是直接操作内存的「物理地址」 在这种情况下&#xff0c;要想在内存中同时运行两个程序是不可能的 操作系统是如何解决这个问题呢&#xff1f; 关键的问题是这两个程序都引用了绝对物理地址&#xff0c;而这正是我们最需要避免的。 可以把进程所使用的…...

数据结构初阶:顺序表和链表

线性表 线性表 ( linear list ) 是 n 个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串 ... 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的, 线性…...

在flutter中添加video_player【视频播放插件】

添加插件依赖 dependencies:video_player: ^2.8.3插件的用途 在Flutter框架中&#xff0c;video_player 插件是一个专门用于播放视频的插件。它允许开发者在Flutter应用中嵌入视频播放器&#xff0c;并提供了一系列功能来控制和定制视频播放体验。这个插件对于需要在应用中展…...

golang微服务框架特性分析及选型

目录 一、微服务框架特性&#xff08;10个&#xff09;包括&#xff1a;Istio、go-zero、go-kit、go-kratos、go-micro、rpcx、kitex、goa、jupiter、dubbo-go、tarsgo 1、特性及使用场景2、比较 二、web框架特性&#xff08;7个&#xff09;包括&#xff1a;gin、fiber、beego…...

苹果cmsV10 MXProV4.5自适应PC手机影视站主题模板苹果cms模板mxone pro

演示站&#xff1a;http://a.88531.cn:8016 MXPro 模板主题(又名&#xff1a;mxonepro)是一款基于苹果 cms程序的一款全新的简洁好看 UI 的影视站模板类似于西瓜视频&#xff0c;不过同对比 MxoneV10 魔改模板来说功能没有那么多,也没有那么大气&#xff0c;但是比较且可视化功…...

GPU的了解

3D动画揭秘显卡的GPU是如何工作的_哔哩哔哩_bilibili 位于显卡中。 与CPU区别&#xff1a; 100名小学生和1位数学博士 做100道非常简单的算术题&#xff0c;小朋友一个人一道题&#xff0c;比博士快。 做1道非常复杂的数学问题&#xff0c;只有博士可以做出来。 CPU主要用于快…...

鸿蒙实战开发-如何使用Stage模型卡片

介绍 本示例展示了Stage模型卡片提供方的创建与使用。 用到了卡片扩展模块接口&#xff0c;ohos.app.form.FormExtensionAbility 。 卡片信息和状态等相关类型和枚举接口&#xff0c;ohos.app.form.formInfo 。 卡片提供方相关接口的能力接口&#xff0c;ohos.app.form.for…...

蓝桥杯刷题 前缀和与差分-[2128]重新排序(C++)

问题描述 给定一个数组 A 和一些查询 L**i, R**i&#xff0c;求数组中第 L**i 至第 R**i 个元素之和。 小蓝觉得这个问题很无聊&#xff0c;于是他想重新排列一下数组&#xff0c;使得最终每个查询结果的和尽可能地大。小蓝想知道相比原数组&#xff0c;所有查询结果的总和最多…...

STM32重要参考资料

stm32f103c8t6 一、引脚定义图 二、时钟树 三、系统结构图 四、启动配置 &#xff08;有时候不小心短接VCC和GND&#xff0c;芯片会锁住&#xff0c;可以BOOT0拉高试试&#xff08;用跳线帽接&#xff09;&#xff09; 五、最小系统原理图 可用于PCB设计 六、常见折腾人bug…...

[StartingPoint][Tier0]Preignition

Task 1 Directory Brute-forcing is a technique used to check a lot of paths on a web server to find hidden pages. Which is another name for this? (i) Local File Inclusion, (ii) dir busting, (iii) hash cracking. (目录暴力破解是一种用于检查 Web 服务器上的大…...

数据库系统概论(超详解!!!)第三节 关系数据库标准语言SQL(Ⅴ)

1.数据更新 1.插入数据 1.插入元组 语句格式 INSERT INTO <表名> [(<属性列1>[,<属性列2 >…)] VALUES (<常量1> [,<常量2>]… ); 功能&#xff1a;将新元组插入指定表中 INTO子句 &#xff1a; 指定要插入数据的表名及…...

SpringBoot | Spring Boot“整合Redis“

目录: 1. Redis 介绍2. Redis 下载安装3. Redis “服务开启”和“连接配置”4. Spring Boot整合Redis的“前期准备” :① 编写实体类② 编写Repository 接口③ 在“全局配置文件”中添加 “Redis数据库” 的 “相关配置信息” 5. Spring Boot整合“Redis” (案例展示) 作者简介…...

SV学习笔记(四)

OCP Open Closed Principle 开闭原则 文章目录 随机约束和分布为什么需要随机&#xff1f;为什么需要约束&#xff1f;我们需要随机什么&#xff1f;声明随机变量的类什么是约束权重分布集合成员和inside条件约束双向约束 约束块控制打开或关闭约束内嵌约束 随机函数pre_random…...

Midjourney艺术家分享|By Moebius

Moebius&#xff0c;本名让吉拉德&#xff08;Jean Giraud&#xff09;&#xff0c;是一位极具影响力的法国漫画家和插画师&#xff0c;以其独特的科幻和幻想风格而闻名于世。他的艺术作品不仅在漫画领域内受到高度评价&#xff0c;也为电影、时尚和广告等多个领域提供了灵感。…...

Vue - 1( 13000 字 Vue 入门级教程)

一&#xff1a;Vue 导语 1.1 什么是 Vue Vue.js&#xff08;通常称为Vue&#xff09;是一款流行的开源JavaScript框架&#xff0c;用于构建用户界面。Vue由尤雨溪在2014年开发&#xff0c;是一个轻量级、灵活的框架&#xff0c;被广泛应用于构建单页面应用&#xff08;SPA&am…...

Vue关键知识点

watch侦听器 Vue.js 中的侦听器&#xff08;Watcher&#xff09;是 Vue提供的一种响应式系统的核心机制之一。 监听数据的变化&#xff0c;并在数据发生变化时执行相应的回调函数。 目的:数据变化能够自动更新到视图中 原理&#xff1a; Vue 的侦听器通过观察对象的属性&#…...

Prometheus+grafana环境搭建redis(docker+二进制两种方式安装)(四)

由于所有组件写一篇幅过长&#xff0c;所以每个组件分一篇方便查看&#xff0c;前三篇 Prometheusgrafana环境搭建方法及流程两种方式(docker和源码包)(一)-CSDN博客 Prometheusgrafana环境搭建rabbitmq(docker二进制两种方式安装)(二)-CSDN博客 Prometheusgrafana环境搭建m…...

宝塔面板安装nginx流媒体服务器(http-flv)

前文介绍了使用nginx搭建流媒体服务器,实现了hls切片方式播放,不过延迟较长。本文采用nginx搭建支持http-flv方式的流媒体服务器,用以测试期性能。 目录 一、服务器操作系统安装 二、在控制台安装宝塔面板...

吉林人民政府城乡建设厅网站/媒体135网站

由于公司有活动奖池的东西&#xff0c;所以会经常会生成一些随机的奖券出来进行测试。所以这个工具就派上用场咯 下载地址&#xff1a;点我 如点击无法下载&#xff0c;可直接复制网址&#xff1a;http://pan.baidu.com/share/link?shareid596097&uk1662765070&#xff0c…...

网页设计模板html代码百度云/seo入门培训教程

先上图 看效果 分析&#xff1a; 1.分页由shader实现 2.shader的图片类容由截屏功能实现 3.按钮触发功能 有2个cs文件 1个shader组成 代码如下 1.EventTriggerListener.cs //将此代码放在项目中任何地方 using UnityEngine; using System.Collections; using UnityEngine.Event…...

制作网站首先做的是/游戏推广员怎么做

HTML 标签Internet Explorer 10, Firefox, Opera, Chrome 以及 Safari 6 支持 标签。注释&#xff1a;Internet Explorer 9 以及更早的版本不支持 标签。 ( 推荐学习&#xff1a;html教程 )定义和用法标签标示任务的进度(进程)。HTML 4.01 与 HTML 5 之间的差异标签是 HTML 5 中…...

做文字头像的网站/郑州专业seo哪家好

本文主要内容包括以下几个方面&#xff1a; ● 唯品会实时平台现状&#xff1b;● Flink在唯品会的实践&#xff1b;● Flink On K8S&#xff1b;● 最新项目进展。 一、唯品会实时平台现状 目前在唯品会&#xff0c;实时平台并不是一个统一的计算框架&#xff0c;而是包括…...

苏州餐饮 网站建设/html制作网页代码

Beyond Compare 前一段时间&#xff0c;介绍过用Total Commander来完成文件夹同步的时候&#xff0c;一位朋友留言推荐了Beyond Compare——一个强大的超越了文件差异比较的工具。Beyond Compare对于提升工作效率&#xff0c;绝对是一个利器。 文件差异工具 单独的文件差异工具…...

如何做私人网页/昆明seo工资

登录mysql mysql -uroot -p Enter password: <输入newpassword> 登录mysql忘记密码的解决方案 同时&#xff0c;登录MySQL时出现 mysql Access denied for user rootlocalhost的错误&#xff0c;也可以用下面的解决方法&#xff0c;主要思路&#xff1a;修改数据库中用…...