【题解】nozomi和字符串
nozomi和字符串
https://ac.nowcoder.com/acm/contest/3002/H
题目链接 https://ac.nowcoder.com/acm/contest/3002/H
1. 分析
可以考虑先把0和1的下标存储下来,再求解包含最多 个0(1)的子字符串的最长长度,要特判全0(1)的情况
2. 代码
#include<bits/stdc++.h> #define FULL(x,y) memset(x,y,sizeof(x)) #define ll long long using namespace std; int n,k; string s; unordered_map<char,vector<int>> um; int main() { cin>>n>>k; cin>>s; for(int i=0;i<n;i++) { um[s[i]].push_back(i); } if (!um['0'].size() || !um['1'].size()) { cout<<n; return 0; } int ans=0; for(auto a:um) { vector<int> v=a.second; int len=v.size(); for(int i=0;i<len;i++) { int l=(i==0?0:v[i-1]+1); int r=(i+k>len-1?n:v[i+k]); ans=max(ans,r-l); } } cout<<ans; return 0; }