首页 > 其他分享 >KMP【模板】

KMP【模板】

时间:2023-09-24 15:44:08浏览次数:41  
标签:int s2 s1 ne length KMP 模板

P3375 【模板】KMP 字符串匹配

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
string s1, s2;
int ne[N];
void get_ne() {
	ne[1] = 0;
	int n = s2.length();
	for (int i = 2,j=0; i <= n; i++) {
		while (j && s2[j+1] != s2[i]) j = ne[j];
		if (s2[j+1] == s2[i]) j++;
		ne[i] = j;
	}
}
int main() {
	cin >> s1 >> s2;
	int n = s1.length(),m=s2.length();
	s1 = ' ' + s1;
	s2 = ' ' + s2;
	get_ne();
	for (int i = 1, j = 0; i <= n; i++) {
		while (j && s1[i] != s2[j + 1]) j = ne[j];
		if (s1[i] == s2[j+1]) j++;
		if (j == m) cout << (i - m + 1) << '\n';
	}
	for (int i = 1; i <= m; i++) {
		cout << ne[i] << ' ';
	}
	return 0;
}

标签:int,s2,s1,ne,length,KMP,模板
From: https://www.cnblogs.com/bu-fan/p/17726058.html

相关文章

  • 模板
    #include<bits/stdc++.h>usingnamespacestd;#definelsp<<1#definersp<<1|1#definelsonls,l,mid#definersonrs,mid+1,r#defineroot1,1,nconstintN=1e6+9,mod=1e9+7;typedeflonglongll;intn,m,a[N];structtree{ intl,r,......
  • portswigger——服务器端模板注入(SSTI)
    什么是服务器端模板注入?服务器端模板注入是指攻击者能够使用本机模板语法将恶意负载注入模板,然后在服务器端执行。模板引擎旨在通过将固定模板与易失性数据相结合来生成网页。当用户输入直接连接到模板中,而不是作为数据传入时,可能会发生服务器端模板注入攻击。这允许攻击者注入......
  • opencv 基于形状的模板匹配
    1.问题或需求描述opencv基于形状的模板匹配测试2.解决方法或原理:主要步骤:使用opencv查找轮廓(findContours)匹配轮廓(形状)(matchShapes)的相似度python代码:importcv2#读取目标图像target_image=cv2.imread('target.png',cv2.IMREAD_COLOR)#读取模板图像template_image......
  • pytest + yaml 框架 -55. raw 不转义模板语法
    前言在yaml文件中,设置的引用变量语法是${var},最近有小伙伴提到一个需求:请求参数的内容需要有特殊符号${var},希望不被转义,不要引用变量,直接用原始数据即可。raw忽略模板语法Jinja2提供了"raw"语句来忽略所有模板语法。语法示例{%raw%}hello${var}world!{%end......
  • KMP
    KMP板子链接[kmp](831.KMP字符串-AcWing题库)#include<iostream>#include<algorithm>#definelllonglongusingnamespacestd;constintN=1e5+10,M=1e6+10;charp[N],s[M];//p为模式串,s为模板串intne[N];//ne[j]含义:是p[1,j]中前缀与后缀相同的最大长度,大小等于......
  • 9.22模板
    最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例1:输入:strs=["flower","flow","flight"]输出:"fl"示例2:输入:strs=["dog","racecar","car"]输出:""解释:输入不存在公共前缀。#inc......
  • docker-dockerfile-docker镜像制作-基于本地模板创建镜像
    1.基于本地模板创建基于本地模板创建Docker镜像的步骤可以归纳如下:下载所需模板:首先,你需要在网络上找到你需要的Docker模板,并下载到本地。你可以从DockerHub或者其他的镜像仓库中获取到所需的模板。解压下载的模板:可以使用类似于7-Zip这样的工具来解压下载的模板文件。导入......
  • 模板特化的多维度挖掘
      假如我有一个需求,就是如果传入的参数是int类型,我就输出int类型,否则就输出T。很显然,根据模板的基础知识,我们可以这么写template<classT>voidf(T){std::cout<<"T\n";}template<>voidf(int){std::cout<<"int\n";}  除了这样写,还有别的写法吗。我......
  • 最短路基础实现方法模板合集
    $\color{#39c588}{关于最短路}$$\color{purple}{首先是最短路的算法选择思路捏,直接来个Y总的图}$++$\color{purple}{单源汇问题}$++$\color{orange}{朴素版Dijkstra}$实现思路//朴素版Dijkstrao(n^2)--处理稠密图--稠密图用邻接矩阵存储//1.初始化邻接......
  • jwt配置及代码模板
    jwt配置及代码模板jwt工具类的使用依赖<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.6.0</version></dependency>application.properties配置jwt.config.key=userlogin......