LeetCode

来源:互联网 发布:为什么监控无网络视频 编辑:程序博客网 时间:2024/04/29 09:33

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 valid but "(]" and "([)]" are not.

利用栈模拟,时间复杂度O(n),空间复杂度O(n)

class Solution {public:    bool isValid(string s) {        stack<char> ans;        if (s == "" || s.length() % 2) return false;        for (int i = 0; i < s.length(); ++i) {            switch (s[i]) {                case '(':                case '{':                case '[': ans.push(s[i]); break;                case ')':                    if (ans.empty()) return false;                    if (ans.top() == '(') ans.pop();                    else ans.push(s[i]);                    break;                case '}':                    if (ans.empty()) return false;                    if (ans.top() == '{') ans.pop();                    else ans.push(s[i]);                    break;                case ']':                     if (ans.empty()) return false;                    if (ans.top() == '[') ans.pop();                    else ans.push(s[i]);                    break;            }        }        if (ans.empty()) return true;        return false;    }};