kmp 模板
来源:互联网 发布:excel sql 编辑:程序博客网 时间:2024/05/22 09:49
#include<iostream>#include<algorithm>#include<string>#include<cstring>using namespace std;#define MAXN 1000005int Next[MAXN];char p[MAXN], s[MAXN];//p为模式串,s为原串 //next数组的求法void GetNext(char *p, int *next) {int pLen = strlen(p);next[0] = -1;int k = -1;int j = 0;while (p[j]){//p[k]表示前缀,p[j]表示后缀if (k == -1 || p[j] == p[k]) {++j;++k;next[j] = k;}else k = next[k];}}//kmp算法int KmpSearch(char *s, char *p){int count = 0;int i = 0, j = 0;int sLen = strlen(s);int pLen = strlen(p);while (i < sLen)//如果用i<strlen(s),每次判断的时候时间都是O(n)可能会TLE {//如果j=-1,或者当前字符匹配成功(即s[i]==p[j])都令i++,j++if (j == -1 || s[i] == p[j]) {i++; j++;}else {//如果j!=-1,且当前字符匹配失败(即s[i]!=p[j]),则令i不变,j=next[j]//next[j]即为j所对应的next值j = Next[j];}if (j == pLen) {count++;j = Next[j];}}return count;}int main(){int N;cin >> N;while (N--){memset(Next, 0, sizeof(Next));cin >> p;cin >> s;GetNext(p, Next);cout << KmpSearch(s, p) << endl;}return 0;}
阅读全文
0 0
- KMP模板
- KMP 模板
- kmp模板
- kmp模板
- kmp模板
- KMP模板
- kmp模板
- kmp模板
- KMP 模板
- 【模板】KMP
- KMP模板
- KMP模板
- 【KMP 模板】
- KMP模板
- KMP 模板
- kmp模板
- KMP模板
- KMP 模板
- Java 获取文件的MIME类型
- java 命令执行jar 或 class main
- android studio httpclient
- 最小的k个数 剑指office原题
- Java通过QQ邮箱发送邮件
- kmp 模板
- HR面试程序员,一般第一个问题会问什么
- 每天一个linux命令(2):cd命令
- Mybatis:关于动态生成sql语句的一些问题
- Linux下ifconfig不显示ip地址
- Java常见集合框架(十九): Map之Map、AbstractMap、HashMap
- 接口和抽象类有什么区别
- RMQ 的ST表做法
- 命名实体识别方法汇总