KMP算法关于next数组详解
| j | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| a | b | c | a | b | c | d | |
| next[j] | 0 | 1 | 1 | 1 | 2 | 3 | 4 |
要求j=7的时候,next数组为多少,j=7的时候,就是看i=6的时候前缀和后缀的关系(因为求7的时候,和7没有关系,和7的前面有关系)
当i=6的时候,j=3,KMP(看门牌算法)
就看j=3和j=6对应的两个字符相不相等,相等,就j+1,就是next[7],如果不相等,就继续看3对应的相不相等。
因为
j=6的next为3,则红色标注的两个字符一定相等,如果j=6和j=3两个字符再对应相等的话,就绿色标注的也相等,依此类推。
void get_next(SString,int &next[])
{i=1;next[1]=0;j=0;while(i<T.length){if(j==0 || T.ch[i]==T.ch[j]){++i;++j;next[i]=j;}else{j=next[j];}}
}
相关文章:
KMP算法关于next数组详解
j1234567abcabcdnext[j]0111234 要求j7的时候,next数组为多少,j7的时候,就是看i6的时候前缀和后缀的关系(因为求7的时候,和7没有关系,和7的前面有关系) 当i6的时候,j3,…...
【Docker】数据持久化 挂载
Docker的镜像是只读的,但是容器是可写的,我们可以将数据写入到容器,不过一旦容器删除数据将会丢 失,那么有什么办法能将数据进行持久化存储呢? ——在宿主机上开辟一块地方,存储内容和docker容器的存储内…...
redis-主从复制
1.主从复制 1.1简介 主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 1.2作用 1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。 2、故…...
知识产权如何转为实缴资本,实操
网上已传疯了,相关部门要求企业注册资本认缴的必须在5年内完成实缴,这一下子引起企业老板们着急了。以前公司注册时,很多老板因为是认缴资本,完全凭脑袋一拍,写上注册资金5000万,有的甚至写上几个小目标。现…...
docker-compose安装
一、docker-compose是什么 Docker Compose是一个用来定义和运行复杂应用的Docker工具。 一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 Compose 通过一个配置文件来管理多个Docker容器,在配置文件…...
「 典型安全漏洞系列 」06.路径遍历(Path Traversal)详解
引言:什么是路径遍历?如何进行路径遍历攻击并规避常见防御?如何防止路径遍历漏洞。 1. 简介 路径遍历(Path Traversal)是一种安全漏洞,也被称为目录遍历或目录穿越、文件路径遍历。它发生在应用程序未正确…...
【Android Gradle 插件】Gradle 参考文档收集
Android Plugin DSL Reference 参考文档 Android Plugin DSL Reference 参考文档 : Android Studio 构建配置官方文档 : 配置 build | Android Studio | Android Developers 添加构建依赖项 参考文档 : https://developer.android.google.cn/studio/build/dependencies …...
Controller的部分注解
目录 1.增加 用到注解 1.1RequestBody注解解析: 2.查询方法当中参数不用注解! 3.起售停售用到注解 3.1PathVariable解析 4.删除菜品注解 4.1RequestParam 5.修改用到的注解 5.1修改分两步 用到两个注解 6:总结 1.增加 用到注解…...
CMake简明教程 笔记
推荐B站视频:1.1 Cmake构建项目的流程_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1xa4y1R7vT?p1&vd_sourcea934d7fc6f47698a29dac90a922ba5a3 >>目录 1)CMake初体验 CMake构建流程Windows下使用CMake构建项目Linux下使用CMake构…...
使用 sorted set 实现令牌桶限流
业务场景为限制消息发送,要求每天不超过一次,每七天不超过三次。 Redission 的 RRateLimiter 虽然功能完备且支持自定义限流配置,但是每个限流器都需要维护三个 key,并且 lua 脚本中的判断逻辑较为复杂。 见:Redisso…...
云上高可用系统-韧性设计模式
一、走近韧性设计模式 (一)基本概念 韧性设计模式是一系列在软件工程中用于提高系统韧性的设计原则、策略、实践和模式。韧性(Resilience)在这里指的是系统对于各种故障、异常和压力的抵抗能力,以及在遭受这些挑战后…...
【保姆级教程】Windows11下go-zero的etcd安装与初步使用
【Go-Zero】Windows11下etcd的安装与初步使用 大家好 我是寸铁👊 总结了一篇Windows11下etcd的安装与初步使用的文章✨ 喜欢的小伙伴可以点点关注 💝 前言: 在使用etcd 前,我们需要了解一下etcd 是什么,为什么使用etcd…...
golang通过go-git下载gitlab源码
1 申请令牌 方法1:具体项目下申请: 方法2:全局申请 2 获取token 3 下载代码 package mainimport ("fmt""os""github.com/go-git/go-git/v5" )func main() {_, err : git.PlainClone("/tmp/foo",…...
探索Pyecharts之美-绘制多彩旭日图的艺术与技巧【第37篇—python:旭日图】
文章目录 引言准备工作绘制基本旭日图调整颜色和样式添加交互功能定制标签和标签格式嵌套层级数据高级样式与自定义进阶主题:动态旭日图数据源扩展:外部JSON文件总结 引言 数据可视化在现代编程中扮演着重要的角色,而Pyecharts是Python中一个…...
c++ QT 信号的个人理解 信号就是独立文件调用的一种“协议”
一. 简介 就我个人来理解,信号槽机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信号与槽来代替函数指针,使程序更安全简洁。 信号和槽机制是 Qt 的核心机制,可以让编程人员将互不相关的对象绑定在一起&a…...
C#语法(关键字)
C#关键字 关键字是C#编译器预定义的保留字。这些关键字不能作为标识符,但是,如果您想要用它们做标识符,在这个前面加个字符做前缀。 保留关键字abstractasbaseboolbreakbytecasecatchcharcheckedclassconstcontinuedecimaldefaultdelegated…...
让B端管理软件既美观又实用的解决方案来了
hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩! 让B端管理软件既美观又实用的解决方案来了 在当今数字化时代,B端管理软件已…...
npm run dev,vite 配置 ip 访问
启动项目通过本地 ip 的方式访问 方式一.通过修改 package.json "scripts": {"dev": "vite --host 0.0.0.0",}, 方式二.通过修改 vite.config.ts export default defineConfig({plugins: [vue(), vueJsx()],server: { // 配置 host 与 port 方…...
实验3:数据显示输出
1、实验目的: 掌握将内存单元存储的数据显示输出到显示器的方法。 2、实验内容: 将内存单元存储的字节数据(例如 56H)的16进制数的低位输出到显示器并显示。 3、实验要求: (1)运行程序后&a…...
查看 Avro 格式的 Kafka 消息(启用了 Confluent Schema Registry )
使用 Avro 格式传递 Kafka 消息要比 Json 更加高效,因为它是二进制格式,在启用了 Confluent Schema Registry 的情况下,会进一步地提升传输效率,因为 Avro 中的 Schema 信息将不再出现在消息中,消息体积会进一步压缩,同时,还可以利用到 Schema Registry 的其他好处,例如…...
用Python和ROS 2 Humble手把手教你写一个简易机械臂仿真器(附完整代码)
用Python和ROS 2 Humble构建2自由度机械臂仿真器:从零实现运动学与轨迹可视化 在机器人开发中,机械臂的运动控制一直是核心难点。传统实体设备的高成本和复杂调试流程让许多开发者望而却步。本文将带你用Python和ROS 2 Humble构建一个完整的2自由度机械臂…...
告别手动敲命令:我是如何用云效流水线把Nacos集群部署效率提升10倍的
从手工到自动化:我的Nacos集群部署效率革命 记得第一次在ACK上手动部署Nacos集群的那个深夜,我对着满屏的kubectl命令和不断报错的终端,意识到这种重复劳动必须终结。当时完成一次完整的集群更新平均需要2小时,而现在通过云效流水…...
SillyTavern终极指南:如何构建沉浸式AI角色聊天体验
SillyTavern终极指南:如何构建沉浸式AI角色聊天体验 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 想要创建栩栩如生的AI角色对话体验吗?SillyTavern作为专为高级用…...
COMSOL激光烧蚀激光融覆选区激光融化 激光直接沉积过程中,快速熔化凝固和多组分粉末的加入导...
COMSOL激光烧蚀激光融覆选区激光融化 激光直接沉积过程中,快速熔化凝固和多组分粉末的加入导致了熔池中复杂的输运现象。 热行为对凝固组织和性能有显著影响。 通过三维数值模型来模拟在316L上直接激光沉积过程中的传热、流体流动、凝固过程。 通过瞬态热分布可以获…...
AIGlasses_for_navigation精彩案例分享:真实视障用户过马路辅助语音引导记录
AIGlasses_for_navigation精彩案例分享:真实视障用户过马路辅助语音引导记录 1. 引言:当AI成为视障者的“眼睛” 想象一下,你站在一个繁忙的路口,耳边是呼啸而过的车流声,眼前却是一片模糊或黑暗。过马路,…...
20世纪十大经典算法解析与应用
二十世纪十大经典算法解析1. 蒙特卡洛方法 (1946)由John von Neumann、Stan Ulam和Nick Metropolis在洛斯阿拉莫斯国家实验室提出。该方法通过随机采样解决确定性数学问题,其核心思想是:在单位正方形内随机撒点统计落在不规则图形内的点数比例该比例近似…...
如何快速掌握PDF对比工具:5个实用场景完全指南
如何快速掌握PDF对比工具:5个实用场景完全指南 【免费下载链接】diff-pdf A simple tool for visually comparing two PDF files 项目地址: https://gitcode.com/gh_mirrors/di/diff-pdf PDF对比工具diff-pdf是一款开源的视觉化PDF文件对比神器,它…...
为什么你的USB摄像头总掉帧?深入UVC协议Alternate Setting配置避坑指南
为什么你的USB摄像头总掉帧?深入UVC协议Alternate Setting配置避坑指南 工业视觉检测线上,一台标称30fps的USB摄像头突然掉到15帧,导致传送带上的缺陷品漏检;手术内窥镜画面在关键时刻出现卡顿,医生不得不暂停操作——…...
5个高效管理技巧:用Ice实现macOS菜单栏清爽体验
5个高效管理技巧:用Ice实现macOS菜单栏清爽体验 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice macOS菜单栏作为日常操作的核心区域,常常因应用图标过多而变得杂乱无章&#…...
5个超实用技巧:用Awesome Adb实现手机调试效率倍增
5个超实用技巧:用Awesome Adb实现手机调试效率倍增 【免费下载链接】awesome-adb ADB Usage Complete / ADB 用法大全 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-adb 副标题:告别繁琐操作,让Android设备管理效率提升10倍 …...
