题解 | #括号序列#

括号序列

http://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2

描述

给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]""([)]"不合法

思路
遍历字符串,若检测到( { 【则入栈,若检测到)}】则与栈顶元素比较,栈顶元素不是与其匹配的括号,直接返回false,若栈顶元素与其匹配则将栈顶元素出栈继续遍历字符串。
当字符串遍历结束后,若栈内还剩余元素(任何形式的左括号),则返回false,栈为空则证明所有括号正好匹配,返回true。

代码如下
class Solution {
public:
    bool isValid(string s) {
        stack<int> S;
        bool flag=true;
        int i=0;
        while(i<s.size()&&flag)
        {
            switch(s[i])
            {
                case '(':S.push(s[i++]);break;
                case '{':S.push(s[i++]);break;
                case '[':S.push(s[i++]);break;
                case ')':if(!S.empty()&&S.top()=='(') {S.pop();i++;}
                         else flag=false; break;
                case '}':if(!S.empty()&&S.top()=='{') {S.pop();i++;}
                         else flag=false; break;
                case ']':if(!S.empty()&&S.top()=='[') {S.pop();i++;}
                         else flag=false; break;
                default:i++;
            }
        }
        if(S.empty()&&flag) return true;
        return false;
    }
};


全部评论

相关推荐

05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务