首页 > 其他分享 >KMP

KMP

时间:2022-08-25 12:22:33浏览次数:37  
标签:const int KMP ++ ans sf define

字符串匹配算法

时间复杂度O(n+m)

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
#define sf scanf
#define pf printf
#define fi first
#define se second
#define pb push_back
#define pll pair<ll,ll>
const int mod=1e9+7;
const int N=1e5+9,M=5e4+9;
char s[N],a[N];
int b[N];
int n,m;
void kmp()
{
	int ans=0;
	for(int i=1;i<=max(n,m);i++)
		b[i]=0;	
	for(int x=0,i=2;i<=m;i++)
	{
		while(x>0&&a[x+1]!=a[i])
			x=b[x];
		if(a[x+1]==a[i])
			x++;
		b[i]=x;
	}
	for(int x=0,i=1;i<=n;i++)
	{
		while(x>0&&a[x+1]!=s[i])
			x=b[x];
		if(a[x+1]==s[i])
			x++;
		if(x==m)
		{
			x=b[x];
			ans++;
		}
	}
	pf("%d\n",ans);	
}
void f0(int T)
{
	sf("%s",a+1);//a子串,s主串 
	sf("%s",s+1);
	m=strlen(a+1);
	n=strlen(s+1);
	kmp();
}
int main()
{
	int T=1;
//	sf("%d",&T);
	for(int i=1;i<=T;i++)
        f0(i);
    return 0;
}

标签:const,int,KMP,++,ans,sf,define
From: https://www.cnblogs.com/2021sgy/p/16623889.html

相关文章

  • KMP算法——深入骨髓的领悟
    前缀函数与KMP算法真前缀:S中不全等于S的前缀前缀函数定义\(s[0\dotsi]\)的真前缀与真后缀相等的最大长度为\(\pi(i)\)。规定\(\pi(0)=0\)。计算前缀函数1.朴......
  • 扩展kmp
    扩展kmp扩展kmp处理的问题:字符串S和字符串T,求S的每个后缀与T的最长公共前缀nxt数组与kmp的不一样charS[N],T[N];intn,m,nxt[N],extend[N];//nxt[i]表示从T[i......
  • KMP
    KMP字符串基本概念字符串S:无特殊说明,字符串仅由26个小写字母'a'-'z',并用大写字母表示一个字符串 S="abcd"|S|:表示一个字符串的长度 |S|=4S[i]:表示字符串S第i个......
  • codeforces526D. Om Nom and Necklace【KMP】
    飞刀可能进不了前百,但加上小李就能进前三忙完入学的各种事终于赶去图书馆时,在校内一天只吃了一个面包和巧克力,已是二十点四十。武大规定二十二点半闭馆,我满心期待在两个......
  • 「学习笔记」Z 函数(扩展 KMP)
    前置芝士:KMP算法正文本文涉及的字符串下标以\(0\)为起点。对于个长度为\(n\)的字符串\(s\)。定义函数\(z(i)\)表示\(s\)和\(s_{i\simn-1}\)(即以\(s_i\)开......
  • kmp字符串
    给定一个字符串S,以及一个模式串P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模式串P在字符串S中多次作为子串出现。求出模式串P在字符串S中所有出现的......
  • KMP,AC 自动机,以及 fail 树
    开坑待填。六个月后,yukari1735准备开始填坑。全文大概无图!\(\bold{Border}\)对于一个字符串\(s\),若\(s\)的一个前缀\(p\)同时也是\(s\)的后缀且\(p\neqs\),那......
  • KMP AC自动机 Z函数
    KMPAC自动机Z函数\(s_{0..n-1}\)前缀函数\(\pi_i\)最大的\(k<i\)使得\(s_{0..k-1}=s_{i-k+1..i}\)abcabcd\(\pi_0=0\)规定的\(\pi_1=0\)\(\pi_2=0\)\(\pi_3......