题目链接
#include<bits/stdc++.h>
using namespace std;
const int N=10010;
int arr[N]; //前缀和数组
char a,b;
string str;
int k;
int main()
{ //直接记录前缀和,记录前面有多少个a,
cin>>k;cin>>str>>a>>b;
for(int i=1;i<=str.size();i++)
{
if(str[i-1]==a)
{
arr[i]=arr[i-1]+1;
}else {
arr[i]=arr[i-1];
}
}
long long res=0;
//后面直接找出b字符,然后看他k个前面有多少个a字符
for(int i=0;i<str.size();i++)
{
if(str[i]==b&&(i-k>=-1))
{ //然后读出sum,加到res中
res+=arr[i-k+2];
}
}
//这个一开始想错了
//想成是要加上中间有多少个a,固然调试好久,可能是前面一直在
//想题,没放松的原因了
//后面才意识到是在当前字符串中,前面的a字符数量
cout<<res<<endl;
return 0;
}