【问题标题】:Find Number of Palindrome Strings in Array Program Errors在数组程序错误中查找回文字符串的数量
【发布时间】:2019-07-19 18:47:55
【问题描述】:

我正在编写代码来查找给定字符串数组中回文字符串的数量。我认为我的想法是正确的,但是当我运行它时我遇到了奇怪的错误。我到底做错了什么?

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

【问题讨论】:

  • 你能粘贴错误吗?
  • 在抛出 'std::bad_alloc' 的实例后调用终止 what(): std::bad_alloc 从解决方案中读取符号...完成。 [新 LWP 3678303] [启用使用 libthread_db 进行线程调试] 使用主机 libthread_db 库“/lib/x86_64-linux-gnu/libthread_db.so.1”。核心是由“./Solution”生成的。程序以信号 SIGABRT 终止,已中止。 #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 要启用此文件的执行,请添加 add-auto-load-safe-path /usr/local/ lib64/libstdc++.so.6.0.25-gdb.py 行到你的配置文件“//.gdbinit”。
  • 要完全禁用此安全保护,请将 set auto-load safe-path / 行添加到您的配置文件“//.gdbinit”。有关此安全保护的更多信息,请参阅 GDB 手册中的“自动加载安全路径”部分。例如,从 shell 运行:info "(gdb)Auto-loading safe path"
  • 编译器:调用中止

标签: c++ palindrome


【解决方案1】:
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

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

【讨论】:

  • 我更新了上面的代码。我现在没有收到所有这些错误,但我的代码超时如下所示:
  • 编译器:由于超时而终止
  • 是否有更好的方法可以做到这一点,或者我的代码仍然存在缺陷。更多帮助将不胜感激。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-06-19
  • 2012-03-20
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
  • 2019-04-20
  • 1970-01-01
相关资源
最近更新 更多