leetcode.20-----------Valid Parentheses

来源:互联网 发布:小学生题目解答软件 编辑:程序博客网 时间:2024/04/29 17:17

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.

方法一:这个方法有点难以理解,不过仔细分析后就一目了然


class Solution {public:bool isValid(string const& s) {string left = "([{";string ringht = ")]}";stack<char> tmp;for (auto c : s){if (left.find(c) != string::npos){tmp.push(c);}else{if (tmp.empty() || tmp.top() != left[ringht.find(c)])//栈为空或着没有找到匹配的return false;else//找到匹配了 就弹出栈顶的元素tmp.pop();}}return tmp.empty();//如果遍历完了,栈里面还有元素说明没有完全匹配}};


方法二:比较直接的匹配,直观一下就能看明白

class Solution {public:    bool isValid(string s) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        stack<char> stacks;        for (int i = 0; i < s.size(); i++) {            switch (s[i]) {                case '(':                case '[':                case '{':                    stacks.push(s[i]);                    break;                case ')':                    if (stacks.empty() || stacks.top() != '(') {                        return false;                    }                    stacks.pop();                    break;                case ']':                    if (stacks.empty() || stacks.top() != '[') {                        return false;                    }                    stacks.pop();                    break;                case '}':                    if (stacks.empty() || stacks.top() != '{') {                        return false;                    }                    stacks.pop();                    break;                default:                    return false;            }        }        return stacks.empty();    }};



0 0
原创粉丝点击