luogu 3375 【模板】KMP字符串匹配
2024-09-30 15:13:45
我太菜了
今天才学会kmp
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<queue>
#include<map>
#include<vector>
#define ll long long
#define inf 2147483611
#define MAXN 1000100
#define MOD 1000000
using namespace std;
inline int read()
{
int x=,f=;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-') f=-;ch=getchar();}
while(isdigit(ch)) {x=x*+ch-'';ch=getchar();}
return x*f;
}
char a[MAXN],b[MAXN];
int n,m,j,nxt[MAXN];
int main()
{
scanf("%s%s",a+,b+);
n=strlen(a+),m=strlen(b+);
for(int i=;i<=m;i++)
{
while(j>&&b[j+]!=b[i]) j=nxt[j];
if(b[j+]==b[i]) j++;
nxt[i]=j;
}
j=;
for(int i=;i<=n;i++)
{
while(j>&&b[j+]!=a[i]) j=nxt[j];
if(b[j+]==a[i]) j++;
if(j==m) {printf("%d\n",i-m+);j=nxt[j];}
}
for(int i=;i<=m;i++)
{
printf("%d ",nxt[i]);
}
}
最新文章
- 轻松自动化---selenium-webdriver(python) (四)
- poj2115-C Looooops(扩展欧几里德算法)
- Linux系统资源监控命令
- YII2.0 验证表单
- oracle 用Navicat创建的表的查询问题
- Java EE学习--Quartz基本用法
- oracle VS postgresql系列-行列转换
- WScript.SendKeys()的sendkeys发送组合键以及特殊字符
- Ruby 文件处理
- httpcontext in asp.net unit test
- 利用JavaScript 的formdata 进行无刷新上传文件
- shell之冒号的作用
- Linux 重启和关机命令
- (转)关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、目录结构、设置压缩和对中文文件名的支持、以及Catalina这个名字的由来……等)
- JMeter 接口测试(一)
- Vue+Element-ui+DateTimePicker 日期时间选择器传值给后台
- js 异步代码
- 用Python做股市数据分析(一)
- TCP的socket资源被耗尽的问题
- Selenium+TestNG+Jenkins 框架图形化UML表示