我正在编写代码,以查找给定字符串数组中回文字符串的数量。我想我有一个正确的主意,但是运行它时出现了奇怪的错误。我到底在做什么错?
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;
}
答案 0 :(得分:2)
string forwardSum[] = {};
这是一个零大小的数组(我不认为这是合法的,但我们会让它通过)
forwardSum[i] = forwardSum[i] + s[j];
这是尝试访问大小为零的数组的ith
元素。
不好。
我并没有真正遵循您的代码(很晚了),但是我认为您可能希望forwardSum
和backwardSum
是字符串而不是字符串数组。并且您可能想使用push_back
将s
中的字符添加到这些字符串。即
string forwardSum;
...
forwardSum.push_back(s[j]); // add s[j] to forwardSum
但是如果您确实希望forwardSum
是一个数组,那么明智的选择是使用向量。
vector<string> forwardSum(size); // a vector of strings with the given size
现在至少应该不会与其余代码崩溃。