KMP
来源:互联网 发布:node es6 编辑:程序博客网 时间:2024/05/29 08:22
#include<iostream>#include<string.h>#include<stdio.h>using namespace std;int next[1000];char s[100],txt[100];bool f;void makenext(const char p[]){ int l,k=0,i; l=strlen(p); next[0]=0; for(i=1;i<l;i++) { while(k>0&&p[i]!=p[k]) k=next[k-1]; if(p[i]==p[k]) k++; next[i]=k; }}void kmp(){ makenext(s); int i,j,L=strlen(txt),l=strlen(s); for(i=j=0;i<L;i++) { while(j>0&&s[j]!=txt[i]) j=next[j-1]; if(s[j]==txt[i]) j++; if(j==l) { printf("appear at:%d\n",i+1-j); j=next[j-1]; while(j>0&&s[j]!=txt[i]) j=next[j-1]; f=true; } }}int main(){ while(cin>>txt>>s) { f=false; kmp(); if(f) cout<<"true"<<endl; else cout<<"false"<<endl; }}
0 0
- KMP
- KMP
- KMP
- KMP
- KMP
- KMP
- kmp
- kmp
- KMP
- kmp
- KMP
- KMP
- KMP
- kmp
- KMP
- KMP
- kmp
- KMP
- Java的心路历程——杂谈向
- 条件测试
- JAVASE基础知识整理(一)
- web.xml中有关路径的问题
- C++虚基类的实现机制:笔记
- KMP
- Linux 建立samba用户
- exynos4412_迅为开发板gpio的操作
- 适配器方法惯用法
- 奇怪的Java题:为什么1000 == 1000返回为False,而100 == 100会返回为True?
- JAVA SE——流
- 关于C++中的虚拟继承的一些总结
- 史上讲得最清楚的树状数组(至少我是这么认为的)
- 折半查找