Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 查找数组程序错误中的回文字符串数_C++_Palindrome - Fatal编程技术网

C++ 查找数组程序错误中的回文字符串数

C++ 查找数组程序错误中的回文字符串数,c++,palindrome,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 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;
 }
int countPalindromes(字符串s){
int size=s.size();
int计数器=0;
字符串forwardSum=“”;
字符串backwardSum=“”;
对于(int i=0;i
这是一个大小为零的数组(我认为这是不合法的,但我们会让它过去)

这是试图访问大小为零的数组的第i个元素

那太糟糕了

我并没有真正了解您的代码(现在已经很晚了),但我认为您可能希望
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
vector forwardSum(大小);//给定大小的字符串向量

现在,这至少不会与您的其余代码崩溃。

您能粘贴错误吗?在抛出“std::bad_alloc”what()实例后调用erminate:std::bad_alloc从解决方案读取符号…完成。[新LWP 3678303][使用libthread_db启用的线程调试]使用主机libthread_db library”/lib/x86_64-linux-gnu/libthread_db.so.1”。核心由“./解决方案”生成。程序以信号SIGABRT终止,中止#0___GI_升高(信号=sig@entry=6)在../sysdeps/unix/sysv/linux/raise.c:51处,若要启用此文件的执行,请将自动加载安全路径/usr/local/lib64/libstdc++.so.6.0.25-gdb.py行添加到配置文件“/.gdbinit”。若要完全禁用此安全保护,请将自动加载安全路径/行添加到配置文件“/.gdbinit”。有关此安全保护的更多信息,请参阅GDB手册中的“自动加载安全路径”部分。例如,从shell:info“(gdb)自动加载安全路径”运行编译器:Abort CalledI更新了上述代码。我现在没有收到所有这些错误,但我的代码正在超时,如下所示:编译器:由于超时而终止是否有更好的方法来执行此操作,或者我的代码是否仍然存在缺陷。如能提供更多帮助,我们将不胜感激。非常感谢。
string forwardSum;
...
forwardSum.push_back(s[j]); // add s[j] to forwardSum
vector<string> forwardSum(size); // a vector of strings with the given size