最基础的KMP模式串匹配
来源:互联网 发布:linux 安装服务 编辑:程序博客网 时间:2024/06/09 22:56
给你一个字符串W 一个模式串T 问W在T中出现的次数
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char W[10005],T[10005];
int next[10005];
void get_next(int len) //得到W的next数组
{
next[0]=-1;
int i=0,j=-1;
while(i<len)
{
if(j==-1||W[i]==W[j])
{
i++;
j++;
next[i]=j;
}
else
j=next[j];
}
}
int KMP() //进行比较两个字符串
{
int l1=strlen(W);
int l2=strlen(T);
get_next(l1);
int i=0,j=0,ans=0;
while(i<l2)
{
if(j==-1||T[i]==W[j])
{
i++;
j++;
}
else
j=next[j];
if(j==l1)
{
ans++;
j=next[j];
}
}
return ans;
}
int main()
{
int t;
cin>>t;
while(t--)
{
scanf("%s%s",W,T);
int ans=KMP();
cout<<ans<<endl;
}
}
PS:KMP最关键的就是要找到与主串匹配的模式串的next数组,根据next数组来确定失配时,模式串移动的位置
- 最基础的KMP模式串匹配
- 串的kmp模式匹配
- 串的匹配模式 蛮力匹配 KMP匹配
- 模式串匹配:KMP
- KMP 模式串匹配
- 串的模式匹配KMP算法
- 串的模式匹配 经典KMP算法
- 串的模式匹配KMP算法
- 串的模式匹配改进--KMP算法
- 串的模式匹配-KMP算法
- 串的模式匹配KMP算法模板
- 【数据结构】 串的模式匹配算法KMP
- 串的模式匹配算法(KMP)
- KMP 解决串的模式匹配问题
- 串的模式匹配---------kmp算法
- 串的模式匹配:KMP算法
- 串的模式匹配-KMP算法
- 串的模式匹配KMP算法
- iwebshop sql语句拼接
- 哈希表,二次探测再散列
- openVPN与域控的关联验证 以及问题解决过程
- Android Studio目录结构
- 使用匿名管道pipe例子
- 最基础的KMP模式串匹配
- NSPredicate多条件查询
- git打补丁(patch)
- JS变量重复声明以及忽略var 声明的问题及其背后的原理
- Codeforces Round Intel Code Challenge Final Round C. Ray Tracing
- Slidingmenu侧滑菜单
- Android图像格式类及图像转换方法
- Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) B
- 控件背景为四周虚线