【KMP算法】KMP统计子串出现次数
来源:互联网 发布:linux 替换jar包文件 编辑:程序博客网 时间:2024/06/10 02:36
http://poj.org/problem?id=3461
题意:题意很明确,就是用第一行的字符串来匹配第二行给出的字符串,能在第二行的字符串中找出几个第一行这样的字符串。
思路:入门KMP算法题,打出匹配串的对应部分匹配值,然后在用kmp算法来匹配。kmp算法参考另一篇文章。
开始学kmp算法,感觉理解算法之后代码实现还是有一定套路性的,只需要每次注意一些不同题目要求来更改些细节的代码实现即可。【目前想法】
【代码实现】
#include<cstdio>#include<cstring>using namespace std;const int MAXW=10001,MAXT=1000001;char W[MAXW],T[MAXT];int next[MAXW];int lenW,lenT;void getnext(int lenW){int i=0,j=-1;next[i]=-1;while(i<lenW) {if(j==-1||W[i]==W[j]) {next[++i]=++j;}else j=next[j];}}int kmp(int pos,int lenW,int lenT){int i=pos,j=0,ans=0;while(i<lenT) {if(T[i]==W[j]||j==-1) ++i,++j;else j=next[j];if(j==lenW) {ans++;j=next[j-1];i--;}}return ans;}int main(){int n;scanf("%d",&n);while(n--) {scanf("%s%s",W,T);lenW=strlen(W);lenT=strlen(T);getnext(lenW);printf("%d\n",kmp(0,lenW,lenT));}return 0;}
0 0
- 【KMP算法】KMP统计子串出现次数
- kmp统计子串出现次数
- POJ 3461 Oulipo(KMP统计子串出现次数)
- POJ 3461 Oulipo(KMP:统计一个串出现的次数)
- POJ 3461 Oulipo【KMP,子串出现次数,可重叠】
- KMP算法求模式串在原串中出现的次数
- 使用KMP算法求子串出现次数
- 使用KMP算法求子串出现次数
- KMP算法解决字符串出现次数
- 统计字符流中一个字符串出现的次数- KMP算法
- KMP:计算模式串出现的次数
- kmp子串查找算法
- KMP 算法,search 子串
- KMP子串匹配算法
- 子串匹配KMP算法
- poj 2406 Power Strings (最小重复子串出现次数 kmp)
- HDU 2087 剪花布条【KMP,子串出现次数,不可重叠】
- POJ-2406 Power Strings(KMP求重复子串出现的最大次数)
- M101P: MongoDB for Developers - Chapter 1: Introduction
- 【JZ雅礼联考】跳楼机 题解
- ListView复用导致checkBox错乱的解决方法
- Linux 共享库加载方法
- ConcurrentHashMap关于方法的深度解析
- 【KMP算法】KMP统计子串出现次数
- AndroidStudio——利用APIStore获取网络新闻
- MyBatis 基础
- Codeforces Round #368 (Div. 2)E Garlands
- 【代码积累】写一手漂亮的代码(1)
- 你想要的CSS居中方法大全
- ngx提供文件下载并加密
- 从源码角度分析RACObserve的实现原理(一)
- 《数据结构与算法》学习笔记15 有序链表和双向链表