作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写代码来查找给定字符串数组中回文字符串的数量。我认为我的想法是正确的,但是当我运行它时出现了奇怪的错误。我到底做错了什么?
int countPalindromes(string s) {
int size = s.size();
int counter = 0;
string forwardSum = "";
string backwardSum = "";
for(int i = 0; i < size; i++){
for(int j = i; j < size; i++){
forwardSum.push_back(s[j]);
backwardSum.push_back(s[(n - 1)-j]);
if(forwardSum == backwardSum){
counter++;
}
}
}
return counter;
}
最佳答案
string forwardSum[] = {};
这是一个零大小的数组(我认为这是不合法的,但我们会让它通过)
forwardSum[i] = forwardSum[i] + s[j];
这是试图访问大小为零的数组的第 第
个元素。
这很糟糕。
我并没有真正遵循你的代码(现在是深夜),但我认为你可能希望 forwardSum
和 backwardSum
是字符串而不是字符串数组。您可能想使用 push_back
将 s
中的字符添加到这些字符串中。即
string forwardSum;
...
forwardSum.push_back(s[j]); // add s[j] to forwardSum
但如果您确实希望 forwardSum
成为数组,那么明智的做法是改用 vector 。
vector<string> forwardSum(size); // a vector of strings with the given size
现在至少应该不会与您的其余代码崩溃。
关于c++ - 查找数组程序错误中的回文串数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57118149/
我是一名优秀的程序员,十分优秀!