Day37-【13003】短文,串的基本概念,匹配算法,算法时间复杂度,真题训练

文章目录

    • 第二节 串
      • 串的基本概念
      • 串的模式匹配
        • 朴素的模式匹配算法(BF算法)
          • 算法最坏时间复杂度O(n x m)
        • 改进的模式匹配算法(KMP算法)
          • 特征向量next,来确定k值
            • 特征向量next的算法实现
          • 算法最坏时间复杂度O(n)
          • 进一步改进next值的计算,简化步骤
    • 第四章真题
      • 真题1
      • 真题2

第二节 串

在这里插入图片描述

串的基本概念

在这里插入图片描述

C语言中没有字符串类型,而是提供了字符数组,将字符串作为字符数组来处理。当使用字符数组表示一个字符串时,C语言规定使用一个字符串结束标志"\0’表示串的结尾。同时,C语言还提供了许多字符串操作。例如,可以定义字符串s1和s2,并展示其内容和长度,语句如下。

在这里插入图片描述

串的模式匹配

求在主串中寻找子串(第一个字符)在主串中的位置,称为串的模式匹配。

此时,子串又称为模式,:串又称为目标。

例如,目标T=“Beijing”,模式P=“jin”,匹配结果为3。

朴素的模式匹配算法(BF算法)

最简单的模式匹配算法是朴素的模式匹配算法。

分别从主串与模式串各自的首字符(看作当前位置)开始,依次比较两个串的当前字符。如果相等,则两个串各自的当前位置均后移一个位置,继续比较下对字符;如果不等,则模式串整体后移一个位置,模式串的首字符和主串的第二个字符分别是当前位置,依次比较两个串的当前字符。继续这个过程,当主串与模式串失配时,模式串整体后移一个位置,从模式串的首字符和主串的第三个字符、第四个字符等开始,依次比较两个串的当前字符。直到模式串与主串的某个子串完全匹配,或到达了主串的最后位置,仍未找到与模式串完全匹配的子串时为止,前者表示匹配成功,后者意味着匹配失败。

全称 Brute - Force 算法 ,也被称为暴风算法、简单匹配算法、蛮力算法 。这是一种在数据结构中用于字符串模式匹配的基本算法,常用于在一个主串内查找一个子串的出现位置,其核心思想是穷举法。

在这里插入图片描述

  • 算法,就是一种解题步骤,看着呆板,但实际上是一种解题的步骤

    程序,只不过是用什么编程语言来实现算法而已,也就是实现解题步骤而已

第一趟比较时,模式串前两个字符分别与主串的前两个字符匹配成功,但第三对字符失配。带下画线的字符表示每趟匹配时失配的位置。失配后,模式串整体后移一个位置,再次从它的首字符开始与主串相对应的字符进行比较。这个过程一直进行到第四趟,匹配成功。在每趟匹配中,主串与模式串的字符之间的比较次数均有三次,共四趟,所以共进行了12次比较。

算法最坏时间复杂度O(n x m)

朴素的模式匹配算法简单,但时间效率不高。设主串长度为n,模式串长度为m。如果每次都是比较到模式串最后一个字符时才出现失配,且主串的最后m个字符与模式串匹配成功(与例4-8中的情形类似),就出现了最坏情况。

此时,每一趟都进行了m次比较,共比较了n-m+1趟,故总比较次数将达到(n-m+1)xm。

在多数场合下,m远小于n,因此,算法的最坏情况时间复杂度为O(n x m)

  • 和排列组合有关,选一个最简单例子,然后推广
改进的模式匹配算法(KMP算法)

有多个模式匹配算法改进了BF算法,下面介绍经典的KMP算法。

在BF算法中,当失配时,模式串整体后移一个位置并继续从模式串首字符开始进行比较。在多数情况下,主串和模式串的当前位置都要回退,意味着主串和模式串中的字符都要进行多次比较,故算法的效率不高。

实际上,当模式串整体向右移动一位后,失配位置之前的各对字符都已经比较过了,也就是已经知道这几个位置上主串和模式串的字符是匹配的

因此,可以借助前一趟比较的结果,决定本趟匹配时模式串后移的位数,从而提高匹配的效率。这种处理思想是由D.E.Knuth、J.H.Morris和V.R.Pratt同时提出的,相应的算法称为KMP算法。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

特征向量next,来确定k值

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

特征向量next的算法实现

在这里插入图片描述

在这里插入图片描述

算法最坏时间复杂度O(n)

在这里插入图片描述

在这里插入图片描述

进一步改进next值的计算,简化步骤

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

第四章真题

真题1

在这里插入图片描述

1、初值表p,矩阵表示如图,更加清晰,实际上是同一条件的不同表示,这种更加容易让人理解

2、要求解的东西,是矩阵的行、列坐标,注意是从0开始,p后面的坐标表示位置1的行,实际上是第2行,位置2的列,实际上是第3列,为0,选A,这个是输入值的不同表示,变成矩阵形式则一目了然,

其实关键是这种哲学上的条件翻译,以及关于坐标位置和实际第几个位置的哲学辨析,翻译出来之后,求解简直一目了然

  • 为什么能够这样翻译,问问AI,或者自己先记一下,关键还是多找这种条件题目

真题2

在这里插入图片描述

位置0的第一个元素,a0-0,地址100

第二个元素,是a1-0,;看来这个的地址是104呗,每个元素占4个地址

第三个元素,是a1-1,地址108

a4-4,已经是第十五个元素

位置0位置1位置2位置3位置4位置5
位置0第一个100
位置1二104三108
位置2
位置3
位置4十一十二十三十四十五
位置5十六十七十八十九二十二十一

(技巧:位置,角标,采用阿拉伯数字,把第几个元素,不要用阿拉伯数字,免得数字看来看去弄混!)

  • 再进阶一点,可以找找这个排列的计算公式,简单粗暴一点就直接排,反正不超过10*10的矩阵

重点是明晰下三角矩阵,这个概念的图的元素的顺序位置

以及进一步明晰,这个概念图的元素的坐标标号

一、然后直接翻译和记忆,a1-1是第几个元素,a0-0是第几个元素;已经输入值,a4-4是第几个元素

二、1、再解题步骤,通过元素位置之差,先求出单个元素占用位置

​ 2、第三个元素,100加了两个4

​ 第十五个元素,100加十四个4,就是156,选B

​ 注意别算成加十五个4了,所以还是图示最简单,找解题规律一目了然

  • 先别管什么偏移量,存储单位的概念,直接画图最直观明了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/13532.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPU-Z重磅更新,Blackwell架构全面支持

由TechPowerUp倾力打造的GPU-Z,是一款集显卡信息查看、实时监控与深度诊断于一体的强大工具。它以其轻巧灵便的体积、完全免费的使用模式以及极其友好的操作界面,赢得了全球无数用户的青睐与信任,成为PC硬件领域中不可或缺的软件。 GPU-Z不仅…

leetCode刷题-图、回溯相关

岛屿数量 class Solution { private:int mi;int mj; public:int numIslands(vector<vector<char>>& grid) {mi grid.size() - 1; // i的范围 0~mimj grid[0].size() - 1; // j的范围 0~mjint landnum 0;bool sea false;do {pair<int, int> res …

VMware Win10下载安装教程(超详细)

《网络安全自学教程》 从MSDN下载系统镜像&#xff0c;使用 VMware Workstation 17 Pro 安装 Windows 10 consumer家庭版 和 VMware Tools。 Win10下载安装 1、下载镜像2、创建虚拟机3、安装操作系统4、配置系统5、安装VMware Tools 1、下载镜像 到MSDN https://msdn.itellyou…

基础篇05-直方图操作

本节将简要介绍Halcon中有关图像直方图操作的算子&#xff0c;重点介绍直方图获取和显示两类算子&#xff0c;以及直方图均衡化处理算子。 目录 1. 引言 2. 获取并显示直方图 2.1 获取&#xff08;灰度&#xff09;直方图 (1) gray_histogram (2) gray_histo_abs (3) gr…

Oracle(windows安装遇到的ORA-12545、ORA-12154、ORA-12541、ORA-12514等问题)

其实出现该问题就是监听或者服务没有配好。 G:\xiaowangzhenshuai\software\Oracle\product\11.2.0\dbhome_1\NETWORK\ADMINlistener.ora SID_LIST_LISTENER (SID_LIST (SID_DESC (SID_NAME CLRExtProc)(ORACLE_HOME G:\xiaowangzhenshuai\software\Oracle\product\11.2.0\d…

LabVIEW2025中文版软件安装包、工具包、安装教程下载

下载链接&#xff1a;LabVIEW及工具包大全-三易电子工作室http://blog.eeecontrol.com/labview6666 《LabVIEW2025安装图文教程》 1、解压后&#xff0c;双击install.exe安装 2、选中“我接受上述2条许可协议”&#xff0c;点击下一步 3、点击下一步&#xff0c;安装NI Packa…

在本地顺利的部署一个al模型从零开始 windows

引言 &#xff08;踩的坑&#xff0c;省流引言的内容没有有使模型跑起来&#xff09; 最近想在本地部署一个deepseek模型&#xff0c;就在网上搞了3 4天终于是能够部署下来了&#xff0c;在部署的时候也是成功的踩了无数的坑&#xff0c;比如我先问al如何在本地部署一个语言模…

基于ansible部署elk集群

ansible部署 ELK部署 ELK常见架构 &#xff08;1&#xff09;ElasticsearchLogstashKibana&#xff1a;这种架构是最常见的一种&#xff0c;也是最简单的一种架构&#xff0c;这种架构通过Logstash收集日志&#xff0c;运用Elasticsearch分析日志&#xff0c;最后通过Kibana中…

Linux学习笔记16---高精度延时实验

延时函数是很常用的 API 函数&#xff0c;在前面的实验中我们使用循环来实现延时函数&#xff0c;但是使用循环来实现的延时函数不准确&#xff0c;误差会很大。虽然使用到延时函数的地方精度要求都不会很严格( 要求严格的话就使用硬件定时器了 ) &#xff0c;但是延时函数肯定…

Linux系统 环境变量

环境变量 写在前面概念查看环境变量main函数的参数argc & argvenv bash环境变量 写在前面 对于环境变量&#xff0c;本篇主要介绍基本概念及三四个环境变量 —— PATH、HOME、PWD。其中 PATH 作为 “ 敲门砖 ”&#xff0c;我们会更详细讲解&#xff1b;理解环境变量的全局…

旋转变压器工作及解调原理

旋转变压器 旋转变压器是一种精密的位置、速度检测装置&#xff0c;广泛应用在伺服控制、机器人、机械工具、汽车、电力等领域。但是&#xff0c;旋转变压器在使用时并不能直接提供角度或位置信息&#xff0c;需要特殊的激励信号和解调、计算措施&#xff0c;才能将旋转变压器…

【漫话机器学习系列】076.合页损失函数(Hinge Loss)

Hinge Loss损失函数 Hinge Loss&#xff08;合页损失&#xff09;&#xff0c;也叫做合页损失函数&#xff0c;广泛用于支持向量机&#xff08;SVM&#xff09;等分类模型的训练过程中。它主要用于二分类问题&#xff0c;尤其是支持向量机中的优化目标函数。 定义与公式 对于…

基于docker搭建Kafka集群,使用KRaft方式搭建,摒弃Zookeeper

KAFKA基于docker使用KRaft进行集群搭建 环境&#xff1a;已成功搭建kafka服务 可点击链接跳转至安装kafka-3.8.0版本 并启用SASL认证 教程 使用基于Zookeeper方式搭建集群教程 kafka-3.8.0版本 并启用SASL认证 教程 搭建kafka-ui可视化工具 192.168.2.91 192.168.2.92 192…

Go 语言 | 入门 | 快速入门

快速入门 1.第一份代码 先检查自己是否有正确下载 Go&#xff0c;如果没有直接去 Go 安装 进行安装。 # 检查是否有 Go $ go version go version go1.23.4 linux/amd64然后根据 Go 的入门教程 开始进行学习。 # 初始化 Go 项目 $ mkdir example && cd example # Go…

凝思60重置密码

凝思系统重置密码 - 赛博狗尾草 - 博客园 问题描述 凝思系统进入单用户模式&#xff0c;在此模式下&#xff0c;用户可以访问修复错误配置的文件。也可以在此模式下安装显卡驱动&#xff0c;解决和已加载驱动的冲突问题。 适用范围 linx-6.0.60 linx-6.0.80 linx-6.0.100…

HTML 复习

文章目录 路径问题标题标签段落标签换行标签列表标签<ol> 有序列表<ul> 无序标签标签嵌套 超链接标签多媒体标签<img> 图片标签<audio> 音频标签<video> 视频标签 表格标签<colspan> 跨行<rowspan> 跨列组合使用 表单标签基本表单标…

hot100(8)

71.10. 正则表达式匹配 - 力扣&#xff08;LeetCode&#xff09; 动态规划 题解&#xff1a;10. 正则表达式匹配题解 - 力扣&#xff08;LeetCode&#xff09; 72.5. 最长回文子串 - 力扣&#xff08;LeetCode&#xff09; 动态规划 1.dp数组及下标含义 dp[i][j] : 下标i到…

114,【6】攻防世界 web wzsc_文件上传

进入靶场 传个桌面有的 直接空白了 我们 访问一下上传的东西 /index 没显示用于解析的.htaccess和.user.ini 文件&#xff0c;还两个都不显示 但上传的时候bp查看状态码是200&#xff0c;意味着上传成功了 别的博主说这是服务器在短时间内就立刻将其删掉了&#xff0c;需…

禅道社区版项目管理软件部署(记录篇)

系统要求&#xff08;这里推荐使用docker容器化方式&#xff09;安装前的准备Docker快速安装最后通过查看地址验证是否部署成功开始界面化安装配置 禅道&#xff08;ZenTao&#xff09;是一款国产开源的项目管理软件&#xff0c;专注于敏捷开发流程&#xff0c;支持 Scrum 和 K…

B站自研的第二代视频连麦系统(上)

导读 本系列文章将从客户端、服务器以及音视频编码优化三个层面&#xff0c;介绍如何基于WebRTC构建视频连麦系统。希望通过这一系列的讲解&#xff0c;帮助开发者更全面地了解 WebRTC 的核心技术与实践应用。 背景 在文章《B站在实时音视频技术领域的探索与实践》中&#xff…