leetcode上面这个一直显示错误,求大佬
leetcode上面这个一直显示错误,如图,除了这个还有说stack模板错误,请问怎么改,算法没有问题#include<string>
#include<stack>
class Solution {
public:
bool isValid(string s) {
if(s.length()%2!=0)
return false;
Stack<char> stack=new Stack<>();
for(char c:s.toCharArrary())
{
if(c=='(')
stack.push(')');
else if(c=='[')
stack.push(']');
else if(c=='{')
stack.push('}');
else if(stack.isEmpty()||c!=stack.pop())
return false;
}
return stack.isEmpty();
}
}; 本帖最后由 xieglt 于 2020-9-4 11:44 编辑
//什么版本编译器,难道不用using namespace?
using namespace std;
//stl 的 stack 难道不是小写吗
stack<char> mystack;
或者
stack<char> * mystack = new stack<char>;
....
delete mystack;
不建议用new 我不知道你用的这个IDE是什么,但是单纯代码已经C++标准说的话
首先 没有using namespace std命名空间,所以找不到 string和 stack 的定义
其次,栈 stack 是 小写 s, 你的是大写,然后定义的栈模板变为小写了 ,建议换一下
#include<string>
#include<stack>
using namespace std;
class Solution
{
public:
bool isValid(string s)
{
if (s.length() % 2 != 0)
return false;
stack<char> *Stack = new stack<char>();
//这个 toCharArrary 我不知道你想调用哪个函数
for (char c : s.toCharArrary())
{
if (c == '(')
Stack->push(')');
else if (c == '[')
Stack->push(']');
else if (c == '{')
Stack->push('}');
else if (Stack->empty() || c != Stack->top())
Stack->pop();
return false;
}
return Stack->empty();
}
};
可能是因为IDE的不一样,导致模板库里面封装的函数不一样,你根据实际情况改改把 第五行 bool isValid(string s)
bool isValid(std::string s)
然后 就没报这行错误了 我叫MD 发表于 2020-9-4 11:38
我不知道你用的这个IDE是什么,但是单纯代码已经C++标准说的话
首先 没有using namespace std命名空 ...
//这个 toCharArrary 我不知道你想调用哪个函数
这个我是想把字符串变成一个一个的字符,这样在for循环里面遍历,所以我按照你的改了,这里的 toCharArrary 错误,这里怎么改呀 LuLD 发表于 2020-9-4 11:45
第五行 bool isValid(string s)
bool isValid(std::string s)
这个是oj环境下的函数体,不能修改这里
页:
[1]