kmp快速匹配

用处:对于一个较长的字符串A,判断A中是否存在字符串B。

思路:

暴力的做法是从A的每个元素开始,依次比较看是否有和B相同的子串,时间复杂度是o(N*N)

优化思路是对于每次查找完成以后,下一次比较的位置不一定要从当前比较的头部的下一个位置开始,而是可以从其余地方开始,也就是B可以一次移动多个位置再比较。那么,B如何移动多个位置呢?这就和B的字符串本身有关,假设ne[j]=i,表示从0-i的字符串和从j-i到j的字符串是一致的,则此时就无需再比较0-i的所有元素了,也就是简化了比较次数。

那么,该如何求跳转的函数ne?

本次规定字符串下标从0开始!!


ne[0]=-1;//表示到0还匹配不成功则没有可以匹配的子串
for(int i=1,j=-1;i<lenb;i++)
{while(j+1&&B[i]!=B[j+1]) //若当前j位置不能匹配成功j=ne[j];if(B[i]==B[j+1])j++;ne[i]=j;
}

对于匹配A的过程,就是每次B的j+1位置和A的i位置匹配不成功,则j跳转到ne[j]重新匹配。

for(int i=0,j=-1;i<lenA;i++)
{while(j+1&&A[i]!=B[j+1])j=ne[j];if(A[i]==B[j+1])j++;if(j==lenB-1) //匹配成功{int low=i-lenB+1;//匹配成功的下标j=ne[j]; //继续找下一个匹配下标}}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

springboot+vue宠物医院挂号看病诊断系统 f9h46

目录 宠物主人宠物医生系统管理人员系统实现截图技术介绍核心代码部分展示详细视频演示源码获取 宠物主人 登录注册&#xff1a;注册账户并登录系统。 首页&#xff1a;显示系统基本信息和用户导向功能。 个人中心&#xff1a;更新个人信息&#xff0c;包括联系方式、密码等。…

【AI创作组】工程方向的硕士研究生学习Matlab的路径

1. MATLAB软件概述 1.1 MATLAB发展历程 MATLAB自20世纪70年代诞生以来,已经经历了多次重要的版本更新和功能扩展。 初始版本:MATLAB的前身只是一个简单的交互式矩阵计算器,由Cleve B. Moler博士在1970年代初期开发,目的是为了方便学生和研究人员使用线性代数软件包LINPAC…

农业与植物基因组分析专家—优青博导提供从实验设计、数据分析到SCI论文咨询的一站式服务。多年经验,精准高效,为农业科研保驾护航!

&#x1f31f; 教授团队领衔&#xff0c;全方位服务&#xff01; &#x1f680; 从实验设计到论文发表&#xff0c;一站式解决方案&#xff01; &#x1f4c8; 选择我们&#xff0c;加速您的科研进程&#xff0c;让成果不再等待&#xff01; &#x1f4dd; 专业分析 定制服…

ubuntu安装gitlab-runner

目录 1.添加gitlab 仓库地址 ​编辑2. 安装gitlab-runner命令 1.添加gitlab 仓库地址 curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash2. 安装gitlab-runner命令 sudo apt-get install -y gitlab-ru…

Python3爬虫教程-HTTP基本原理

HTTP基本原理 1&#xff0c;URL组成部分详解2&#xff0c;HTTP和HTTPS3&#xff0c;HTTP请求过程4&#xff0c;请求&#xff08;Request&#xff09;请求方法&#xff08;Request Method&#xff09;请求的网址&#xff08;Request URL&#xff09;请求头&#xff08;Request H…

招联金融内推(深圳武汉大量招后端、算法)---2025秋招内推

【投递方式】 直接扫下方二维码&#xff0c;或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus&#xff0c;使用内推码 igcefb 投递&#xff09; 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…

HubSpot一站式增长平台,让获客变得超简单

在这片浩瀚的商业海洋中&#xff0c;每一位企业家都是一位勇敢的航海家&#xff0c;驾驶着自己的船只&#xff0c;追逐着心中的梦想与远方。然而&#xff0c;风浪无情&#xff0c;竞争激烈&#xff0c;如何才能确保你的航程既平稳又快速&#xff1f;HubSpot&#xff0c;正是那位…

宠物去浮毛救星?希喂、小米、霍尼韦尔宠物空气净化器哪款好用

怎么有人放假也不开心&#xff1f; 快到的国庆假期真是愁死我了...本来我妈国庆去旅游&#xff0c;我就打算不回家&#xff0c;和我家猫过二人世界。结果突然有事&#xff0c;我妈取消出行&#xff0c;改成让我假期回家陪她。我回家容易&#xff0c;我家猫回去可难啊&#xff…

【C++】拆分详解 - string类

文章目录 一、为什么学习string类&#xff1f;二、标准库中的string类  1. 定义  2. 常用接口说明     2.1 构造     2.2 容量操作     2.3 访问及遍历操作     2.4 修改操作     2.5 非成员函数 三、OJ练习自测  [1. 仅仅反转字母](https://leetcod…

基于DeepFace深度学习模型的离线版人脸识别API接口实现(类似百度在线API接口)

一 背景 人脸识别技术经过数年的发展&#xff0c;在技术算法、识别性能、应用场景以及隐私保护和数据安全等方面都取得了显著的进步和成熟。 应用场景 门禁系统&#xff1a; 在门禁系统中&#xff0c;离线人脸识别可用于身份验证&#xff0c;用户只需站在摄像头前&#xff0…

明明没违规,应用还是被判恶意软件?可能是这些原因

作为Google Play上架应用的开发者&#xff0c;大家的普遍感受&#xff1a;比起写代码&#xff0c;上架的过程简直更让人心力交瘁&#xff01;特别是涉及用户数据和隐私保护的时候&#xff0c;稍有疏忽&#xff0c;就可能面临应用被下架、甚至账号被封的风险。 最近听到很多开发…

FPGA随记——VIVADO中ASYNC_REG指令

参考文章&#xff1a;Vivado综合属性系列一、ASYNC_REG_asyncregtrue-CSDN博客 -很棒棒的 跨时钟域设计&#xff08;CDC&#xff09;是个老生常谈的问题&#xff0c;其场景很多很杂&#xff0c;其中一个比较为人熟知的就是单bit信号从慢时钟到快时钟所采用的两级寄存器处理的…

一种求解城市场景下无人机三维路径规划的高维多目标优化算法,MATLAB代码

在城市环境下进行无人机三维路径规划时&#xff0c;需要考虑的因素包括高楼、障碍物、飞行安全和效率等。为了解决这些问题&#xff0c;研究者们提出了多种算法&#xff0c;包括基于智能优化算法的方法。 首先&#xff0c;无人机航迹规划问题的数学模型需要考虑无人机的基本约…

Spring Boot集成Redis Search快速入门Demo

1.什么是Redis Search&#xff1f; RedisSearch 是一个基于 Redis 的搜索引擎模块&#xff0c;它提供了全文搜索、索引和聚合功能。通过 RedisSearch&#xff0c;可以为 Redis 中的数据创建索引&#xff0c;执行复杂的搜索查询&#xff0c;并实现高级功能&#xff0c;如自动完…

【第十二周】李宏毅机器学习笔记10:生成式对抗网络2

目录 摘要Abstract1.GAN is Still Challenging2.Evaluation of Generation2.1 Mode Collapse2.2.Mode Dropping2.3.Diversity 3.Conditional GAN4.Learning from Unpaired Data总结 摘要 本周主要学习了上周关于生成式对抗网络的剩余知识&#xff0c;了解了为什么 GAN 难以训练…

【数字】flexnoc Qos配置

对于Qos_generator 的regulator模式来说可以配置的寄存器如下表&#xff1a; 因为我们没有使用external的clk来做count&#xff0c;也没有使用外部的threshold&#xff0c;所以都是使用的internal的时钟。 根据文档讲解的概念Bandwidth设置为下&#xff1a; Urgency使用来源如…

Nat Med.作者提供全文的绘图代码,对于学习作图很有帮助(一)

本期教程 获得本期教程全文代码&#xff1a;在订阅号后台回复关键词&#xff1a;20240923 2022年教程总汇 2023年教程总汇 引言 今天分享的文章是2024发表在Nat Med.期刊中&#xff0c;来自上海交通大学医学院的文章&#xff0c;作者提供了全文的绘图代码&#xff0c;确实勇&a…

S32K3 工具篇8:如何移植RTD MCAL现有demo到其他K3芯片

S32K3 工具篇8&#xff1a;如何移植RTD MCAL现有demo到其他K3芯片 一&#xff0c;文档简介二 &#xff0c;平台以及移植步骤2.1 平台说明2.2 移植步骤2.2.1 拷贝工程并配置2.2.1.1 拷贝工程2.2.1.2 配置工程 2.2.2 EB 工程配置 三&#xff0c; 命令行编译及其结果测试四&#x…

在idea里运行swing程序正常,但是在外部运行jar包却报错,可能是jdk版本问题

在idea里运行swing程序异常&#xff0c;报Caused by: java.awt.HeadlessException错误 System.setProperty("java.awt.headless","false");加上这句话

Spring Data Rest 远程命令执行命令(CVE-2017-8046)

&#xff08;1&#xff09;访问 http://your-ip:8080/customers/1&#xff0c;然后抓取数据包&#xff0c;使用PATCH请求来修改 PATCH /customers/1 HTTP/1.1 Host: Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MS…