题解 | #有效括号序列#

有效括号序列

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

class Solution {
public:
    /**
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    bool isValid(string s) {
        // write code here
        if(s.length()%2!=0)//如果符号出现奇数个,则一定不匹配
            return false;
        stack <char> stc;//创建字符堆栈
        for(int i=0;i<s.length();i++)//遍历整个字符数组进行处理
        {          
                    //对左侧符号进行入栈操作,筛掉所有左侧符号,便于出栈和右侧符号进行比较    
                        if(s[i]=='(')
              {
              stc.push(s[i]);
                continue;
              }
            else if(s[i]=='[' )
                  {
                  stc.push(s[i]);
                    continue;
                   }
            else if(s[i]=='{' )
                  {
                  stc.push(s[i]);
                    continue;
                   }
            else if (stc.empty())//判断没有出现左侧符号时,则当前一定为右侧符号,如果堆栈无元素,则没有可与当前右侧符号匹配的项,匹配失败
                  return false;
                        //堆栈不为空,对当前右侧号进行匹配,弹出堆栈符号
            char temp=stc.top();
                        //进行匹配
            if(s[i]==')'&&temp=='(')
            {
                stc.pop();
                continue;
            }
            else if(s[i]==']' &&temp=='[')
                {
                stc.pop();
                continue;
                }
            else if(s[i]=='}' &&temp=='{')
               {
                stc.pop();
                continue;
               }
            else
                return false;//弹出左侧符号都不匹配,则整个符号集匹配失败
            
        }
            //经过上面的处理好,再对符号集全为左侧符号或右侧符号进行判断,这种情况也是匹配失败的情况
        if(stc.size()!=0)
            return false;
            //上面全部匹配成功,返回true
        return true;
        
    }
};

#组队刷题##C++工程师##24届#
全部评论

相关推荐

01-10 22:44
已编辑
门头沟学院 Java
不知道怎么取名字_:其实好多都是这样,好多公司除创业的外,都是有自己的那一套了,新项目也会在基于老项目适配,但是这种要是能把人家项目的代码全部看完,自己整体出架构方案,使用的技术,那就收获很大的
有深度的简历长什么样?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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