KMP算法实现

66 字
1 分钟
KMP算法实现

LuoguProblem-P3375 【模板】KMP为基准#

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int N=1e6+10;
int nextt[N]={-1};
string s1,s2;
void tonext(){
int k=-1;
for(int i=1;i<s2.size();i++){
while(k>-1&&s2[i]!=s2[k+1]) k=nextt[k];
if(s2[i]==s2[k+1]) k++;
nextt[i]=k;
}
}
void kmp(){
tonext();
int k=-1,len1=s1.size(),len2=s2.size();
for(int i=0;i<len1;i++){
while(k>-1&&s1[i]!=s2[k+1]) k=nextt[k];
if(s1[i]==s2[k+1]) k++;
if(k==len2-1){
cout<<i-len2+2<<endl;
}
}
return;
}
signed main(){
cin>>s1>>s2;
kmp();
for(int i=0;i<s2.size();i++) cout<<nextt[i]+1<<' ';
}

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
KMP算法实现
https://firefly-abs.pages.dev/posts/kmp/
作者
WanFoxAZX
发布于
2026-07-17
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
WanFoxAZX
Hello, I'm AZX.
公告
Welcome!
分类
标签
最新动态

还没有发布动态

更多动态
站点统计
文章
3
动态
0
分类
2
标签
5
总字数
76
运行时长
0
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly vunknown
文章许可
CC BY-NC-SA 4.0