第十四届蓝桥杯大赛软件赛省赛C/C++大学B组 试题 G: 子串简写
判断每个
c
2
c_2
c2前面i-k+1
有多少个字符
c
1
c_1
c1
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N = 500010;
char str[N];
int s[N];
int main()
{
char a[2],b[2];
int k;cin>>k;
cin>>(str+1)>>a>>b;
int n=strlen(str+1);
for(int i=1;i<=n;i++)
if(str[i]==*a)
s[i]++;
for(int i=1;i<=n;i++) s[i]+=s[i-1];
LL ans=0;
for(int i=k;i<=n;i++)
if(str[i]==*b)
ans+=s[i-k+1];
cout<<ans;
return 0;
}