KMP算法实现
66 字
1 分钟
KMP算法实现
以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<<' ';}支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
快速幂算法实现
算法利用C++实现快速幂算法,以https://www.luogu.com.cn/problem/P1226为参考
2
从0写软件-Win32应用代码模板
C++有点像大份
3
下载/编译/使用 NeonVision
NeonVision保姆级教你下载和编译及使用NeonVision
4
关于我的OI代码缺省源
OI以后懒得写了直接复制
5
一些冷门但好用的STL容器
OISTL真的很好用
随机文章随机推荐











