首页 > 其他 > 详细

20-有效的括号

时间:2021-03-05 22:28:03      阅读:25      评论:0      收藏:0      [点我收藏+]

leetcode题解——有效的括号

题目如下

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

有效字符串需满足:

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

解题思路

  1. 首先判断第一个括号,若不是左括号,则直接结束
  2. 否则,开始遍历括号串,用栈做辅助
    1. 每当碰到一个左括号,就入栈
    2. 否则,若栈顶是匹配当前右括号的左括号,则出栈
  3. 当整个括号串遍历结束时
    1. 若栈空,则括号有效
    2. 否则,括号无效
//有效的括号
class Solution {
public:
    bool isValid(string s) {
        int i, n=s.size();
        bool flag=false;
        stack<char> st;
        if(s[0]==‘)‘ || s[0]==‘]‘ || s[0]==‘}‘){
            return false;
        }
        for(i=0; i<n; i++){
            if(s[i]==‘(‘ || s[i]==‘[‘ || s[i]==‘{‘){
                st.push(s[i]);
            }else{
                if(st.empty()){
                    return false;
                }
                if(s[i]==‘)‘){
                    if(st.top()!=‘(‘){
                        return false;
                    }else{
                        st.pop();
                    }
                }
                if(s[i]==‘]‘){
                    if(st.top()!=‘[‘){
                        return false;
                    }else{
                        st.pop();
                    }
                }
                if(s[i]==‘}‘){
                    if(st.top()!=‘{‘){
                        return false;
                    }else{
                        st.pop();
                    }
                }
            }
        }
        if(st.empty()){
            return true;
        }else{
            return false;
        }

    }
};
}

20-有效的括号

原文:https://www.cnblogs.com/karkinos/p/14487309.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!