valid parentheses

来源:互联网 发布:阿里巴巴上传宝贝软件 编辑:程序博客网 时间:2024/06/05 08:11

验证括号序列,圧栈弹栈比较即可

提交时报runtime error 检查发现27行的st.empty()写成了s.empty(),看来在有s表示字符串的情况下,用st表示栈真不妙。


#include <cstdio>#include <cstdlib>#include <algorithm> #include <stack>#include <iostream>#include <iomanip>using namespace std;/*https://oj.leetcode.com/problems/valid-parentheses/Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.The brackets must close in the correct order, "()" and "()[]{}" are all validbut "(]" and "([)]" are not.*/class Solution {public:    bool isValid(string s) {        std::stack<char> st;        for (size_t i=0;i!=s.size();++i){        if (st.empty()){        st.push(s[i]);        continue;        }        switch(s[i]){        case ')':{        if (st.top()=='(')         st.pop();        else         st.push(s[i]);        break;        }        case ']':{        if (st.top()=='[')        st.pop();        else         st.push(s[i]);        break;        }        case '}':{        if (st.top()=='{')        st.pop();        else         st.push(s[i]);        break;        }        default:{        st.push(s[i]);        }        }        }        return st.empty()?true:false;    }};int main(){Solution sol;string cmd; while (cin>>cmd){cout<<"input:"<<cmd<<"  "<<boolalpha<<sol.isValid(cmd)<<endl;} system("pause");return 0;}


0 0
原创粉丝点击