#include<bits/stdc++.h>
using namespace std;
int next[100];
string father,son;
void getnext(){
next[0]=-1;
int j=0,k=-1;
while(j<son.size()){
if(k==-1||son[j]==son[k])next[++j]=++k;
else k=next[k];
}
}
int kmp(){
getnext();
int i=0,j=0;
while(i<(int)father.size()&&j<(int)son.size()){//这里一定要将size()强转成int类型,不然就出错了
if(j==-1||father[i]==son[j])i++,j++;
else j=next[j];
}
if(j<(int)son.size())return -1;
return i-j;
}
int main(){
cin>>father>>son;
cout<<kmp()<<endl;
cout<<(0<father.size())<<endl;
cout<<(-1<father.size())<<endl;//居然输出0,-1明明比father.size()小啊!
cout<<(-1<(int)father.size());//size用int强转一下
}
相关推荐
【KMP算法详解——适合初学KMP算法的朋友】
KMP算法的初级体验,只为抛砖引玉之用
kmp算法总结
搞ACM也有三年了,期间学习了不少算法,到12月把上海站打完也要成退役狗了。最近突然想把学过的一些算法回过头来好好总结一下,于是就有了我的算法总结系列。这是这个系列的开端,所以先写一个简单点的算法,以后会慢慢复习一些复杂的算法,最后还是希望自己能够坚持下去吧。 KMP算法 KMP算法是一种线性时间复杂度的字符串匹配算法,它是对BF(Brute-Force,最基本的字符串匹配算法)的改进。对
KMP算法
NEXT[0] 通常初始化为 -1。如果,则,同时递增i和j。如果不匹配,且j > 0,回退到NEXT[j-1],否则。NEXT数组的构建时间复杂度是 O(m),其中 m 是子串的长度。代码演示:// 注意i从1开始,j从0开始// next数组的第一个值为0j++;i++;
KMP
KMP
【CVPR 2025】低光增强HVI论文精读与源码复现---part1 论文网络精读
【CVPR 2025】本文参考论文HVI: A New Color Space for Low-light Image Enhancement part1 在文章中对论文核心网络与原理展开详细解释 part2 对论文公开代码的arch网络与其他核心部分展开详细解释
Abaqus 单元与全局刚度矩阵导出实战指南:从INP修改到结果解析
本文提供了Abaqus中导出单元刚度矩阵和全局刚度矩阵的完整实战指南。通过详细步骤讲解INP文件修改、关键指令插入及结果文件解析,帮助工程师、研究人员和二次开发者深入理解有限元软件内核,实现理论验证、二次开发与深度问题调试。
[kmp+模板] kmp模板
文章目录0. 前言1. kmp 0. 前言 kmp 模式匹配算法很牛,一般结合 kmp 的题目都不怎么简单,或是困难题目可以采用 kmp 的思想很快搞定,之前博文有写过 kmp· 算法原理,和简单实现了下,但是由于当时认识浅薄,大家看看就好。在此总结一个简单的 kmp 算法模板。 当时的博文:[杂谈] 12. BF、KMP、RK Algorithm 字符串匹配算法 1. kmp 这里是拿数组模拟栈。 模板代码: #include <iostream> using namespace std;
Autosar中CAN信号传输的模块化解析与实战应用
本文深入解析了AUTOSAR架构下CAN信号传输的模块化流程,详细阐述了从应用层软件组件(SWC)到COM模块打包、PduR路由、CanIf硬件抽象直至Can Driver驱动的完整“流水线”。文章通过实战案例,重点说明了模块化设计如何实现解耦与可移植性,并提供了关键模块配置要点与调试技巧,旨在帮助开发者构建高可靠、实时的车载通信系统。
2025 KMP 的现状和未来,选择 KMP 会有什么问题吗?
从目前来看,客户端领域还是很推荐使用 KMP 进行开发,前面说这些问题不是让你放弃,而是让你心里有个底,正常说来其实一般人都不会遇到什么大问题,而是否使用 CMP 就见仁见智了,目前国内 KMP 大厂使用的还比较客观,但是 CMP 的使用率其实并不高,使用 CMP 需要的技术积累会更高,特别适配鸿蒙的成本上,所以我个人更推荐 KMP ,至于 CMP 或者可以再稳稳,如果你想上生产环境。那么,2025 你准备好 KMP 了么?
『杭电1199』Color the Ball
Problem Description There are infinite balls in a line (numbered 1 2 3 ....), and initially all of them are paint black. Now Jim use a brush paint the balls, every time give two integers a b and follow by a char 'w' or 'b', 'w' denotes the ball from a to
UNet改进(52):轴向+代理注意力让UNet既轻快又精准
本文提出了一种改进的UNet架构,通过引入轴向注意力代理模块增强医学图像分割性能。该模块将二维自注意力分解为行列两个一维注意力操作,结合可学习代理节点进行全局信息聚合,在保持计算效率的同时提升模型对长距离依赖的建模能力。实验表明,该方法在多个医学图像数据集上较传统UNet提升3.2%-5.7%的Dice系数,边界质量显著改善。该方案特别适用于具有方向性结构的医学图像分割任务,如血管、器官等,在计算复杂度和分割精度之间实现了良好平衡。
扩展KMP
摘自 拓展kmp算法总结 1、扩展KMP是什么?解决何种问题?与KMP算法的异同? 拓展kmp是对KMP算法的扩展,它解决如下...
【推荐100个unity插件之24】实现2d交互式草树叶和随风飘动的效果——pixelgraphics插件
【推荐100个unity插件之23】实现2d交互式草树叶和随风飘动的效果——pixelgraphics插件
AcWing 831:KMP字符串 ← KMP算法
KMP 算法中的 next 数组仅取决于模式串本身,而与相匹配的主串无关。 next 数组的核心作用是“当模式串 T 的第 j 位与主串 S 的第 pos 位失配时(即 T[j]≠S[pos] 时),让模式串 T 的第 next[j] 位与主串 S 的第 pos 位再进行比较”。这相当于让模式串 T 往右移动了 j-next[j] 位后,再进行比较。
碰撞检测 | 图解视线生成Bresenham算法(附ROS C++/Python/Matlab实现)
Bresenham视线生成是一种高效的算法,用于在二维网格上绘制直线。Bresenham算法可以应用在栅格地图中进行一维碰撞检测,即检查起点和终点间直线是否穿过障碍栅格。本文图解Bresenham碰撞检测的原理,并给出ROS C++/Python/Matlab三种实现加深理解
Win11 系统下 VisualStudio2022 配置点云库 PCL1.11.1
安装完成之后打开文件夹E:\PCL 1.11.1\3rdParty\OpenNI2双击 并选择路径 (E:\PCL 1.11.1\3rdParty\OpenNI2) 安装即可全部安装完成之后,将pcl-1.11.1-pdb-msvc2019-win64.zip解压后的 .pdb文件拷贝到(E:\PCL 1.11.1\bin)中设置环境变量:到此,环境变量配置完成。
kmp算法和kmp的优化
一、kmp是什么 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特—莫里斯—普拉特操作(简称KMP算法)。KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)。 简单来...
迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)
迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)
大话 KMP 算法
LeetCode上有一题,简单难度的,以下是原题 这个题目应该刷LeetCode的同学大部分都刷到过,比较荒谬的是可以直接用 indexOf 方法实现,并且是最优的解法,看到评论以后一片哗然,大家扯到最多的是这道题就应该用KMP来做,如果用KMP做那这道题应该是困难级别的。所以看了这些评论以后,决定自己去摸索一下KMP的算法,以及大概其实现原理。 网上找了很多关于解释KMP算法的...
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
visio安装包
Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。
【黑马计划-1】KMP及扩展KMP
KMP 核心 玄学 failfailfail 数组 failfailfail 数组的含义即是某段字符串的最长公共前后缀。 具体来讲,设 T[1…j−1]=T[i−j…i−1](j⩽i)T[1…j−1]=T[i−j…i−1](j⩽i)T[1\ldots j-1]=T[i-j\ldots i-1](j\leqslant i) ,那么 fail[i]fail[i]fail[i] 为 jjj ...
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
kmp及扩展kmp
kmp kmp匹配主要匹配的是两个字符串,我们将需要匹配的记录为s1,用于匹配的串为s2. kmp匹配的是从以当前s1中的ch字符为末尾的字符串能够在s2中匹配的最大前缀的长度。 也即是s1中的每个前缀的最长后缀所匹配的s2的最长前缀。 先考虑自身与自身匹配的情况: 如果用dp+数学归纳来思考: 假设当前需要匹配j位置的字符,从0—j-1位置都已经记录了该位置能够匹配到的自身字符...
[Leetcode] KMP
题意:给定一个字符串text,和一个模式串pattern。让你判断text是否包含pattern,如果包含,则返回text中出现pattern的第一个字符的坐标。否则返回-1。如果pattern是空字符串(长度为0),则返回1 解法1—暴力:我们遍历text的每个位置i,并从i开始遍历长度为sizepsize_psizep的字符串,看其是否和pattern相等,如果相等返回i,否则继续遍历。 ...
KMP+扩展KMP
KMP next数组表示P[j]以前最长相同前缀后缀 若下标从0开始(以下模板就采用这种方式),next[ i ] 表示前面长度为 i 的字符串前缀和后缀相等的最大长度为 next[ i ] 。 若下标从1开始,则next[ i ] 表示前面长度 i - 1的字符串中前缀和后缀相等的最大长度为 next[ i ] - 1 两种方式当S[i]与P[j]不同时j都应该移动到next[j] const ...
KMP与扩展KMP(Z函数)
模板 KMP void getfail() { int i,j; j=0; for(i=2;i<=n;i++) { while(j&&s[i]!=s[j+1]) j=nxt[x][j]; if(s[i]==s[j+1]) j++; nxt[i]=j; } } 扩展KMP a[1……m], b[1……n] s = a + ‘*’ + b ...
KMP与扩展KMP算法
字符串的特征向量next[]:第i(0开始计数)个元素表示从第一个字符到第i个字符首尾最多匹配多少个字符. 注意这里是数目,与KMPNext是下标不同。 注意是子串匹配 例如:字符串abcdaabcab的特征向量是(0,0,0,0,1,1,2,3,1,2) 对于每个字符,暴力比较耗时。可看出每个字符的特征值可以由它之前的字符推出:用next[i]表示到第i个字符首尾匹配的字符数。则对于字符i...
2755



被折叠的 条评论
为什么被折叠?



