我在做一些LeetCode问题,我不确定为什么我的向量要调整大小。这是我的代码的相关部分:
void turnToString(std::vector<int> & charFreq, std::string & freqStr)
{
for(int i : charFreq)
freqStr.append(std::to_string(i));
std::cout << freqStr << std::endl;
}
std::vector<int> charFreq (26,0);
for(int i = 0, j = p.size() - 1; j < s.size(); i++, j++)
{
charFreq[s[j] -'a']++;
turnToString(charFreq, str);
if(str == freqStr)
res.push_back(i);
charFreq[s[i]-'a']--;
}
一切都可以编译,但是在我的turnToString()函数中,当我将频率向量打印为字符串时,它会不断加倍: output
我不确定为什么会这样。我的目的是使向量保持大小为26,并在迭代“ s”时更改其频率。相反,它向我的向量添加了一个新的频率数组。我知道我可以通过使用常规数组来解决此问题,但我想我会以此为学习机会。为什么会发生这种情况,我该怎么做才能使用其他数据结构来解决此问题?
答案 0 :(得分:0)
对于charFreq中的每个条目,请将其附加到freqStr:
freqStr.append(std::to_string(i));
因此str
(在函数外部)将越来越多。