常州建设工程信息网站,网站链接优化怎么做,做的好的商城网站设计,网站模板怎么做视频教程正题 题目大意
给一个字符串#xff0c;求一个最短的子串包含所有在这个字符串里出现的字母。 解题思路
枚举右指针#xff0c;左指针移动到刚好满足要求的位置。每次就一个最小值。 时间复杂度:O(56n)O(56n)O(56n) code
#includecstdio
#includealgorithm求一个最短的子串包含所有在这个字符串里出现的字母。 解题思路
枚举右指针左指针移动到刚好满足要求的位置。每次就一个最小值。 时间复杂度:O(56n)O(56n)O(56n) code
#includecstdio
#includealgorithm
#includeiostream
#define N 500010
#define Z 60
using namespace std;
int n,mz[Z],num;
char c,a[N];
bool v[Z];
int p(char x)
{if(xa) return x-a27;else return x-A1;
}
int main()
{scanf(%d,n);for(int i1;in;i){cina[i];if(!v[p(a[i])]) num;v[p(a[i])]true;}int ans2147483647;for(int i1;in;i){if(!mz[p(a[i])]) num--;mz[p(a[i])]i;if(!num){int maxs0,mins2147483647;for(int i1;i52;i)if(v[i])maxsmax(maxs,mz[i]),minsmin(mins,mz[i]);ansmin(ans,maxs-mins1);}}printf(%d,ans);
}