由于数据弱,可以暴力。
题目链接点击这里
本题需要注意 回文串特判问题
本文给出的是KMP代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define inf 0x3f3f3f
ll nt[inf];
ll lent, lens, cnt;
string s,t;
bool pad()
{
for(ll i=0;i<lent/2;i++)
{
if(t[i]!=t[lent-i-1]) return false;
}
return true;
}
void Next()
{
ll i=0;
ll j=-1;
nt[0]=-1;
while(i<lent)
{
if(j==-1||t[i]==t[j])
{
i++;
j++;
nt[i]=j;
}
else j=nt[j];
}
return;
}
void kmp()
{
ll i=0;
ll j=0;
Next();
while(i<lens)
{
if(j==-1||s[i]==t[j])
{
i++;
j++;
}
else j=nt[j];
if(j==lent) cnt++;
}
}
int main(void)
{
ll n;
cin>>n;
while(n--)
{
cnt=0;
cin>>t>>s;
lent=t.size();
lens=s.size();
kmp();
if(!pad())
{
reverse(s.begin(),s.end());
kmp();
}
cout<<cnt<<endl;
}
}