题解
2025-07-11 21:57:07
发布于:江苏
5阅读
0回复
0点赞
#include <iostream>
#include <string>
#include <vector>
void solve() {
int k;
std::cin >> k;
std::string s;
char a1, a2;
std::cin >> s >> a1 >> a2;
int n = s.length();
if (n < k) {
std::cout << 0 << '\n';
return;
}
std::vector<int> prefix_a1(n, 0);
if (s[0] == a1) {
prefix_a1[0] = 1;
}
for (int i = 1; i < n; ++i) {
prefix_a1[i] = prefix_a1[i - 1] + (s[i] == a1 ? 1 : 0);
}
long long total_count = 0;
for (int j = k - 1; j < n; ++j) {
if (s[j] == a2) {
int start_limit_index = j - k + 1;
if (start_limit_index >= 0) {
total_count += prefix_a1[start_limit_index];
}
}
}
std::cout << total_count << '\n';
}
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
solve();
return 0;
}
这里空空如也
有帮助,赞一个