洛谷 [模板]KMP字符串匹配

Winema ·
更新时间:2024-09-21
· 613 次阅读

又水了一篇
题目链接:https://www.luogu.com.cn/problem/P3375

#include using namespace std; int Next[1000010]={0}; void getNEXT(string str) { Next[0] = -1; int i=-1, j=0; while(j < str.size()) { if(i==-1 || str[j]==str[i]) { i++; j++; Next[j] = i; } else i = Next[i]; } } void KMP(string str1, string str2) { int i=0, j=0; int len1=str1.size(), len2=str2.size(); while(i<len1) { if(j==-1 || str1[i]==str2[j]) { i++; j++; } else j = Next[j]; if(j == len2) { cout<<i-j+1<>s1>>s2; getNEXT(s2); KMP(s1, s2); for(int i=1; i<=s2.size(); i++) cout<<Next[i]<<" "; return 0; }
作者:Havoc.Wei



模板 kmp

需要 登录 后方可回复, 如果你还没有账号请 注册新账号