在数组程序错误中查找回文字符串数

时间:2019-07-19 18:47:55

标签: c++ palindrome

我正在编写代码,以查找给定字符串数组中回文字符串的数量。我想我有一个正确的主意,但是运行它时出现了奇怪的错误。我到底在做什么错?

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;
 }

1 个答案:

答案 0 :(得分:2)

string forwardSum[] = {};

这是一个零大小的数组(我不认为这是合法的,但我们会让它通过)

forwardSum[i] = forwardSum[i] + s[j];

这是尝试访问大小为零的数组的ith元素。

不好。

我并没有真正遵循您的代码(很晚了),但是我认为您可能希望forwardSumbackwardSum是字符串而不是字符串数组。并且您可能想使用push_backs中的字符添加到这些字符串。即

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

现在至少应该不会与其余代码崩溃。