KMP模板
来源:互联网 发布:论文查重率软件 编辑:程序博客网 时间:2024/06/06 18:53
https://www.luogu.org/problem/lists?name=3375洛谷P3375KMP字符串匹配
这个算法真是精妙~
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int len1,len2,tot;int Next[100010],pos[100010];char s[1000010],t[100010];void initNext(){ int j=0; for(int i=2;i<=len2;i++) { while(j&&t[i]!=t[j+1]) j=Next[j]; if(t[i]==t[j+1]) j++; Next[i]=j; }}/*void initNext()//从0开始存 { int j=-1; Next[0]=-1; for(int i=1;i<len;i++) { while(j!=-1&&t[i]!=t[j+1]) j=Next[j]; if(t[i]==t[j+1]) j++; Next[i]=j; }}*/int KMP(){ int j=0,ans=0; for(int i=1;i<=len1;i++) { while(j&&s[i]!=t[j+1]) j=Next[j]; if(s[i]==t[j+1]) j++; if(j==len2) { //ans++; pos[++tot]=i; j=Next[j]; } } //return ans;}int main(){ scanf("%s%s",s+1,t+1); len1=strlen(s+1); len2=strlen(t+1); initNext(); KMP(); for(int i=1;i<=tot;i++) printf("%d\n",pos[i]-len2+1); for(int i=1;i<=len2;i++) printf("%d ",Next[i]); return 0;}
阅读全文
1 0
- KMP模板
- KMP 模板
- kmp模板
- kmp模板
- kmp模板
- KMP模板
- kmp模板
- kmp模板
- KMP 模板
- 【模板】KMP
- KMP模板
- KMP模板
- 【KMP 模板】
- KMP模板
- KMP 模板
- kmp模板
- KMP模板
- KMP 模板
- 关于6.0 webview加载不出图片的问题
- Linux下is not in the sudoers file解决方法
- 区块链入门(1):搭建(Ubuntu系统)Truffle v3.2.1 开发和测试环境
- boolean值在本地的存储
- 基于SFTP的文件上传下载服务
- KMP模板
- sklearn
- 面向对象
- stk 入门
- HK 2016(Colourful Graph-构造)
- iOS设置具体页面横屏或者是竖屏
- Dubbo服务启动依赖检查
- H5语义化标签笔记库
- XML学习04-Java中DOM方式解析XML文件