#include <iostream>
#include <stack>
int main() {
std::string s = "()"; // Input
std::stack<char> stack_;
for (int i=0; i < s.length(); i++) {
if (s[i] == stack_.top()) {
stack_.pop();
}
if (s[i] == '(') {
stack_.push(')');
}
if (s[i] == '{') {
stack_.push('}');
}
if (s[i] == '[') {
stack_.push(']');
}
else {}
}
while(!stack_.empty()) {
std::cout << stack_.top() << std::endl;
stack_.pop();
}
return 0;
}
我是C++的新手,每天在LeetCode.com上做一个问题,试图提高自己的水平。我首先在CLion中测试了我的代码,这会给我这个代码一个"Process finished with exit code 11“的错误。我想要解决的问题是:https://leetcode.com/problems/valid-parentheses/
这只是一段简单的测试代码,我更改了字符串s的输入,我的策略是将括号类型放在堆栈上,如果匹配的闭括号是下一个字符,则将它们剥离,然后如果堆栈最后为空,则字符串通过测试。
我认为退出代码11是内存泄漏或分段错误,但通过查看我的代码,我无法确定可能发生在哪里。任何帮助都将不胜感激。谢谢!
发布于 2020-01-24 18:58:00
这一行总是被调用,即使在刚刚创建stack_
时也是如此:
if (s[i] == stack_.top()) {
在空堆栈上调用top()
会导致未定义的行为。
发布于 2020-01-24 19:01:11
std::stack::顶部描述https://en.cppreference.com/w/cpp/container/stack/top
您正在尝试获取对空栈的顶部元素的引用,因此会得到一个异常
https://stackoverflow.com/questions/59894999
复制相似问题