爱学习520 发表于 2020-9-4 11:27:07

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:38:05

本帖最后由 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

我叫MD 发表于 2020-9-4 11:38:42

我不知道你用的这个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的不一样,导致模板库里面封装的函数不一样,你根据实际情况改改把

LuLD 发表于 2020-9-4 11:45:26

第五行      bool isValid(string s)

    bool isValid(std::string s)

然后 就没报这行错误了

爱学习520 发表于 2020-9-4 11:50:08

我叫MD 发表于 2020-9-4 11:38
我不知道你用的这个IDE是什么,但是单纯代码已经C++标准说的话

首先 没有using namespace std命名空 ...


      //这个 toCharArrary 我不知道你想调用哪个函数
这个我是想把字符串变成一个一个的字符,这样在for循环里面遍历,所以我按照你的改了,这里的 toCharArrary 错误,这里怎么改呀

爱学习520 发表于 2020-9-4 11:54:46

LuLD 发表于 2020-9-4 11:45
第五行      bool isValid(string s)

    bool isValid(std::string s)


这个是oj环境下的函数体,不能修改这里
页: [1]
查看完整版本: leetcode上面这个一直显示错误,求大佬