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