4 条题解
-
1
套滑动窗口板子就行,注意结果要开long long
#include<bits/stdc++.h> using namespace std; int cnt[200]; string s; int k; int main() { cin >> s>>k; s = " " + s; int n = s.size() - 1; //直接滑动窗口 memset(cnt, 0, sizeof(cnt)); int l = 1, r = 0; long long ans = 0;//记录满足字串的数量,要开long long for (; l <= n;l++) { while(r<n) //每一个l情况下,找到最长子串就能找到,对应的字串数量 { r++; cnt[s[r]]++;//记录字符出现次数 if(cnt[s[r]]>k) { cnt[s[r]]--; //值回退优先于,r回退 r--; break; } } ans += r - l + 1;//对应的所以字串数量 cnt[s[l]]--; } cout << ans << endl; return 0; }
信息
- ID
- 679
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 208
- 已通过
- 86
- 上传者