这一题是一道关于字符串比较的题目,题目简单来说就是找到一对l,r。使得 字符串在[l,r]中相同字符的对数除以(r-l+1)最大。
这一题并不难,但开始写的时候我的脑子wa了。用爆搜过了一半的测试点。
正确操作是 用一个i变量控制边界,j变量控制有边界。用一个数组统计字符出现的次数,如果该字符第一次出现不予理会,如果之前存在过,则加上该字符之前存在的数量。最后更新一下最大值。
用字符的数量更新对数,确实没想到。orz。
代码内容
for(int i=0;i<n;i++)
{
double res = 0.0;
vector<int> alls(500,0);
alls[str[i]]++;
for(int j=i+1;j<n;j++)
{
if(alls[str[j]] != 0) res +=alls[str[j]];
alls[str[j]]++;
ans = max(ans,(double)res / (j-i+1));
}
}