YbtOJ KMP算法课堂过关 例1 子串查找【KMP】
发布日期:2021-05-07 13:10:07 浏览次数:13 分类:技术文章

本文共 642 字,大约阅读时间需要 2 分钟。

在这里插入图片描述


这道题是KMP模板题,具体的来讲述。

代码

#include
#include
#include
using namespace std;int ans,next[1010010],longys,longmbs;char ys[1001010],mbs[1001010];void find_next(){ int k=0; for(int i=2; i<=longmbs; i++) { while(k>0&&mbs[k+1]!=mbs[i]) k=next[k]; if(mbs[k+1]==mbs[i]) k++; next[i]=k; }}void kmp(){ find_next(); int k=0; for(int i=1; i<=longys; i++) { while(k>0&&mbs[k+1]!=ys[i]) k=next[k]; if(mbs[k+1]==ys[i]) k++; if(k==longmbs) { ans++; k=next[k]; } }}int main(){ scanf("%s",ys+1); scanf("%s",mbs+1); longys=strlen(ys+1); longmbs=strlen(mbs+1); kmp(); cout<
上一篇:深入浅出:KMP算法最!详!解!
下一篇:YbtOJ hash和hash表课堂过关 例5 子正方形【hash】【二分】

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月25日 05时40分00秒