#include <bits/stdc++.h>
using namespace std;
int main()
{
int k;
cin >> k; // 输入K值
string a;
cin >> a;//输入字符串
char x,y;
cin >> x >> y;//输入两个字符
vector<int> dp(a.size());//定义DP数组
//DP数组的含义是,截至字符串下标为i的字符(包括下标为i的字符)一共有多少个首字符c1
dp[0] = a[0] == x;//判断字符串的开头是不是首字符
long long int jie = 0;//存储结果
for(int i = 1;i < a.size();i++)
{
if(a[i] == x)
{
dp[i] = dp[i-1] + 1;//如果是首字符就更新dp数组
}
else
{
dp[i] = dp[i - 1];//如果不是首字符dp数组就是前一个的值
if(a[i] == y && i >= k - 1)//如果是尾字符且前k个在有效范围内,则更新结果
jie += dp[i - k + 1];//加上截至第i-k+1个字符中有多少的首字符
}
}
cout << jie;// 输出结果
}
0 回复
0 转发
5 喜欢
2 阅读



