- #include
- using namespace std;
- const int N=110;
- string s,p;
- int n,m;
- int ne[N];
-
- void init()
- {
- ne[1]=-1; //手动把第一位写成-1,y总的写法是-1,0开头
- for(int i=2,j=0;i<=m;i++)
- {
- while(j&&p[i]!=p[j+1]) j=ne[j];
- if(p[i]==p[j+1]) j++;
- ne[i]=j;
- }
- for(int i=1;i<=m;i++)
- {
- cout<
" "; //由于最终输出的是0,1开头的,不是-1,0开头,所以整体+1 - }
-
- cout<
- }
-
- void KMP()
- {
- int f=0;
- for(int i=1,j=0;i<=n;i++)
- {
- while(j&&s[i]!=p[j+1]) j=ne[j];
- if(s[i]==p[j+1]) j++;
-
- if(j==m)
- {
- f=1;
- cout<
1< - j=ne[j];
- }
- }
-
- if(!f)
- {
- cout<<"0"<
- }
- }
-
-
- int main()
- {
- for(int i=0;i<3;i++)
- {
- memset(ne,0,sizeof ne);
- cin>>s>>p;
-
- n=s.size();
- m=p.size();
- s=" "+s;
- p=" "+p;
- init();
- KMP();
- }
-
- return 0;
- }
-
相关阅读:
第6章 数据存储全方案——详解持久化技术
Linux Top 详细介绍,包含task排序
Linux---(七)Makefile写进度条(三个版本)
DevExpress.NET 23.1.6 Crack
2022年全球服务器AI芯片市场竞争与发展前景研究
ENVI_classic报错
openjudge 1.8.15 细菌的繁殖与扩散
Java基础-day05
多御安全浏览器新版下载 | 功能优秀性能出众
数据大屏定时请求后端数据
-
原文地址:https://blog.csdn.net/bei2002315/article/details/128009459