20. 有效的括号

简介: 20. 有效的括号

题目描述

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


有效字符串需满足:


左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

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

解题思路

括号匹配的问题,显然我们可以用栈来解决。


遇到左括号就入栈。


当是右括号的时候,观察栈是否为空,当为空的时候——不匹配


当栈顶的左括号与右括号不匹配的时候——不匹配

代码

class Solution {
public:
    bool isValid(string s) {
        stack<char> st;
        for(auto ch:s)
        {
            if(ch=='('||ch=='['||ch=='{') st.push(ch);
            else 
            {
                if(st.empty()) return false;
                if(ch==')') 
                {
                    if(st.top()!='(') return false;
                    st.pop();
                }
                else if(ch==']')
                {
                    if(st.top()!='[') return false;
                    st.pop();
                }
                else if(ch=='}')
                {
                    if(st.top()!='{') return false;
                    st.pop();
                }
            }
        }
        return st.empty();
    }
};
相关文章
|
6月前
字符串括号匹配
字符串括号匹配
|
5月前
20. 有效的括号
20. 有效的括号
|
6月前
22. 括号生成
22. 括号生成
47 4
|
5月前
22.括号生成
22.括号生成
|
6月前
|
C++
去括号问题(C++处理)
去括号问题(C++处理)
77 0
|
6月前
leetcode-921:使括号有效的最少添加
leetcode-921:使括号有效的最少添加
34 0
|
6月前
leetcode:有效的括号
leetcode:有效的括号
leetcode:20.有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
62 0