好,所以我有一个字符串,我重复了n次。例如,我有“ aba”,n = 10,我想找到一个的数量。因此,在这种情况下(abaabaabaa),我们有7个。我编写了以下通过某些测试用例的代码,但是当n大时,我得到了错误:抛出'std :: bad_alloc实例后调用终止。有办法解决吗?谢谢。
long repeatedString(string s, long n) {
long i = 0, j = 0, cnt = 0;
long sz = s.size();
vector<char> ar;
while (i < n)
{
ar.push_back(s[j]);
j++;
if (j >= sz)
{
j = 0;
}
i++;
}
i = 0;
while (i < n)
{
if (ar[i] == 'a')
{
cnt++;
}
i++;
}
return cnt;
}
基本上,原因是您的内存不足。当您执行push_back
时,向量可能正在重新分配,这将需要连续分配中的capacity + capacity * 2
(乘数可能有所不同)空间量。如果您提前保留,则可以解决该问题,但是您仍然需要n
个连续字节的内存。