免费发布信息网站大全有哪些,p2p网站建设方案书,wordpress 页脚广告,网站做好后交接链接 :
Problem - C - Codeforces
题意 :
输入一个长度 ≤1e5 的字符串 s#xff0c;只包含小写字母。 找到一个最小的 k#xff0c;使得所有长度 k 的连续子串#xff0c;有公共字母#xff08;这些子串的交集不为空#xff09;。
思路 :
就是求每个字母的…链接 :
Problem - C - Codeforces
题意 :
输入一个长度 ≤1e5 的字符串 s只包含小写字母。 找到一个最小的 k使得所有长度 k 的连续子串有公共字母这些子串的交集不为空。
思路 :
就是求每个字母的相邻距离的最大值然后求这些最大值的最小值;
代码 : #includebits/stdc.h
using namespace std;
int main(){string s ; cin s;// 每个字母的最大间隔int ans INT_MAX , n s.size();mapint,vectorint a;for(int i0;in;i)a[(int)(s[i]-a)].push_back(i);for(int i0;i26;i){int len a[i].size() , ma 0 ;a[i].push_back(n);if(len) ma a[i][0]1;else continue;for(int j1;jlen;j) ma max(ma,a[i][j]-a[i][j-1]);ans min(ma,ans);// 求最小值 }cout ans endl;
}
代码(优化)
用a来记录每个字母之前出现的位置b记录每个字母的距离的最大值
#includebits/stdc.h
using namespace std;
int a[26],b[26];
int main(){string s ; cin s;for(int i0;i26;i) a[i] -1;int ans INT_MAX , n s.size();for(int i0;in;i){int t s[i]-a;b[t] max(i-a[t],b[t]);a[t] i;} for(int i0;i26;i)if(a[i]!-1)ans min(ans , max(b[i],n-a[i]));cout ans endl;
}