【力扣刷题】20. 有效的括号-栈

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

 

示例 1:

输入:s = "()"

输出:true

示例 2:

输入:s = "()[]{}"

输出:true

示例 3:

输入:s = "(]"

输出:false

示例 4:

输入:s = "([])"

输出:true

 

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

20.有效括号

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

 

版权声明:
作者:Zhang, Hongxing
链接:http://zhx.info/archives/575
来源:张鸿兴的学习历程
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录