先讲一下题意:字符串只有数字组成
(下面方便起见称为d型字符串)
d型字符串:其包含的字符种类是sum而每一种字符其在这个字符的数量均不超过sum
(即<=sum)
分析:
数字是0~9共十个,所以说d型字符串最长为100,然后暴力,我们现在只需找里面哪一个字符最多(因为是否符合条件取决于最多的那一个字符当其不超过sum则满足)
代码:
void solve()
{
int n; cin>>n;
string s; cin>>s;
s=" "+s;
int sum=0;
for(int i=1;i<=n;i++)
{
map<int,int> mp;
int cl=0; //种类
int mx=0;
for(int j=i;j<=n&&j<i+100;j++)
{
int x=s[j]-'0';
if(!mp[x])
{
mp[x]++;
cl++;
}
else
{
mp[x]++;
mx=max(mx,mp[x]);
}
if(mx<=cl) sum++;
}
}
cout<<sum<<endl;
return ;
}