Leetcode—— 20.有效的括号

20. 有效的括号

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

每个右括号都有一个对应的相同类型的左括号。

Leetcode—— 20.有效的括号_第1张图片

class Solution {
public:
    bool isValid(string s) {

        if(s.length()%2==0)
        {           
           stack<char> st;
            for(int i=0;i<s.length();i++)
            {
                char c=s.at(i);
                if(c=='('||c=='['||c=='{')
                {
                    st.push(c);
                }
                else if(c==')'){
                    if(!st.empty()&&st.top()=='(')
                    {
                        st.pop();
                    }
                    else
                    {
                        return false;
                    }
                }
                else if(c=='}')
                {
                    if(!st.empty()&&st.top()=='{')
                    {
                        st.pop();
                    }
                    else
                    {
                        return false;
                    }
                }
                else{
                    if(!st.empty()&&st.top()=='[')
                    {
                        st.pop();
                    }
                    else
                    {
                        return false;
                    }
                }
            }
            return st.empty();
        }
        return false;

    }
};

Leecode官方代码:

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();
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/valid-parentheses/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(leetcode,算法,职场和发展)