pku3461 Oulipo (KMP)
比较裸的KMP
#include<iostream> #include<algorithm> using namespace std; int n,m; char T[1000010],P[10010]; int nxt[10010]; int KMP() { nxt[0] = -1; int k = -1; for ( int q=1;q<=m-1;q++){ while (k > -1 && P[k+1] != P[q]) k = nxt[k]; if (P[k+1] == P[q]) ++k; nxt[q] = k; } int pos = -1; int j = -1,i = 0,count = 0; while (i < n) { while (j > -1 && P[j+1] != T[i]) j = nxt[j]; if (P[j+1] == T[i]) ++j; if (j+1 == m) { count++; j = nxt[j]; } ++i; } return count; } int main() { int cas; scanf ( "%d" ,&cas); while (cas--) { scanf ( "%s %s" ,P,T); n= strlen (T); m= strlen (P); printf ( "%d\n" ,KMP()); } return 0; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?