标签:
#include<stdio.h> #include <iostream> #include <vector> #include <stdlib.h> #include <string.h> using namespace std; int Next[1005]={-1}; char a[1005],b[1005]; int m,n,cnt; void getNext() { int t=-1; int j=0; while(j<m-1) { if(t<0||b[j]==b[t]) { t++;j++; Next[j]=(Next[j]==Next[t]?Next[t]:t); } else { t=Next[t]; } } return; } int KMP() { cnt=0; int i=0; int j=0; while(i <n &&j<m) { if(j<0 || a[i]==b[j]) { i++;j++; } else { j=Next[j]; } if(j==m) { cnt++; j=0; } } return cnt; } int main() { while(scanf("%s",a)!=EOF) { if(a[0]==‘#‘ && strlen(a) ==1) break; else { scanf("%s",b); n=strlen(a); m=strlen(b); getNext(); printf("%d\n",KMP()); } } return 0; }
标签:
原文地址:http://www.cnblogs.com/vector11248/p/5468050.html