20. 有效的括号

题目:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。

示例 1:

输入:s = "()"
输出:true
示例 2:

输入:s = "()[]{}"
输出:true
示例 3:

输入:s = "(]"
输出:false

1.原创

class Solution {
public:
    bool isValid(string s) {
        stack<char> stack_tmp;
        for (char i:s){
            if (i=='(' || i=='{' || i=='[')
                stack_tmp.push(i);
            else
            {
                if (
                    (i==')'&& !stack_tmp.empty() && stack_tmp.top()=='(') 
                    || (i=='}'&& !stack_tmp.empty() && stack_tmp.top()=='{')  
                    || (i==']'&& !stack_tmp.empty() && stack_tmp.top()=='[')
                    )
                    stack_tmp.pop();
                else 
                    return false;
            }
        }
        if (stack_tmp.empty())
            return true;
        else    
            return false;
    }
};

2.题解

class Solution {
public:
    bool isValid(string s) {
        int n = s.size();
        if (n % 2 == 1) {
            return false;
        }

        unordered_map<char, char> pairs = {
            {')', '('},
            {']', '['},
            {'}', '{'}
        };
        stack<char> stk;
        for (char ch: s) {
            if (pairs.count(ch)) {
                if (stk.empty() || stk.top() != pairs[ch]) {
                    return false;
                }
                stk.pop();
            }
            else {
                stk.push(ch);
            }
        }
        return stk.empty();
    }
};

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/valid-parentheses/solution/you-xiao-de-gua-hao-by-leetcode-solution/
来源:力扣(LeetCode)
posted @ 2021-03-26 15:14  USTC丶ZCC  阅读(43)  评论(0编辑  收藏  举报