标签:mit class ext main 个数 %s names 字符 限制
abcde a3
aaaaaa aa
#
0 3
#include <bits/stdc++.h> using namespace std; int Next[10000]; char t[10000]; //主串 char p[10000]; //模式串 int lenp,lent; void get_next() { int i,j; Next[0] = j = -1; i = 0; while(i<lenp) //最后一位的判断其实是多余的 { while(j!=-1&&p[j]!=p[i]) j = Next[j]; Next[++i] = ++j; } } int kmp3() //返回t串中有多少个p串 { int i,j; i = j = 0; int ans = 0; while(i<lent) { while(j!=-1&&t[i]!=p[j]) j = Next[j]; if(j==lenp-1) { ans++; j = -1; // j指针改变为-1 然后++ 从0重新查找 } i++; j++; } return ans; } int main() { while(scanf("%s",t)) { if(strcmp(t,"#")==0) break; scanf("%s",p); lenp = strlen(p); lent = strlen(t); get_next(); int ans = kmp3(); cout<<ans<<endl; } return 0; }
标签:mit class ext main 个数 %s names 字符 限制
原文地址:https://www.cnblogs.com/hao-tian/p/9643905.html