题解 | #括号序列#

括号序列

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

采用栈的结构来检查,遇到左括号则入栈,遇到右括号则对应出栈。如果出栈时没有遇到相应的左括号则表示括号不匹配。如果在最后栈中有元素则表示右括号不足,也表示括号不匹配。

class Solution {
public:
    /**
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    bool isValid(string s) {
        // write code here
        stack<char> char_stack;
        for(auto& ch: s)
        {
            if(ch == '(' || ch=='[' || ch=='{')
            {
                char_stack.push(ch);
            }else if(ch == ')')
            {
                //遍历stack;
                bool flag = false;
                while(!char_stack.empty())
                {
                    char curr = char_stack.top();
                    if(curr != '(')
                    {
                        char_stack.pop();
                    }else
                    {
                        char_stack.pop();
                        flag = true;
                        break;
                    }
                }
                if(flag == false)
                {
                    //没有找到'(',返回false;
                    return false;
                }
            }
            else if(ch == ']')
            {
                //遍历stack;
                bool flag = false;
                while(!char_stack.empty())
                {
                    char curr = char_stack.top();
                    if(curr != '[')
                    {
                        char_stack.pop();
                    }else
                    {
                        char_stack.pop();
                        flag = true;
                        break;
                    }
                }
                if(flag == false)
                {
                    //没有找到'[',返回false;
                    return false;
                }

            }
            else if(ch == '}')
            {
                //遍历stack;
                bool flag = false;
                while(!char_stack.empty())
                {
                    char curr = char_stack.top();
                    if(curr != '{')
                    {
                        char_stack.pop();
                    }else
                    {
                        char_stack.pop();
                        flag = true;
                        break;
                    }
                }
                if(flag == false)
                {
                    //没有找到'{',返回false;
                    return false;
                }
            }
        }

        return char_stack.empty();
    }
};
全部评论

相关推荐

12-15 12:50
河北工程大学
sta666:我也是这个国际商业化的,三天,一天一面,就通过了,不过我是后端实习生,好好面感觉能过。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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