题目描述
这是一道模板题。
给定一个字符串 A 和一个字符串 B,求 B在 A中的出现次数。 A和 B中的字符均为英语大写字母或小写字母。
A中不同位置出现的 B可重叠。
输入格式
输入共两行,分别是字符串 A和字符串B 。
输出格式
输出一个整数,表示B 在 A中的出现次数。
样例
样例输入
zyzyzyz
zyz
样例输出
3
//kmp
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
char s[1000010];
char a[1000010];
int nex[1000010];
int la,ls;
int kmp(int la,int ls)
{
int i=0;
int j=0;
int num=0;
while(i<ls&&j<la)
{
if(j==-1||s[i]==a[j])
{
i++;
j++;
}
else
j=nex[j];
if(j==la)
{
num++;
j=nex[j];
}
}
return n