题解 | #有效括号序列#

有效括号序列

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

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return bool布尔型
     */
    //用栈的先进后出来保证括号的匹配 *********
    //用一个栈把左括号存起来 再遍历字符串 遇到右括号则pop出匹配的左括号
    // stackpop完则说明
    bool isValid(string s) {
        // write code here
        stack<char> s1;
        for(size_t i = 0;i<s.size();i++)
        {
            switch (s[i]) {
                case '(':
                case '{':
                case '[':
                    s1.push(s[i]);
                    break;
                case ')':
                    if(s1.empty() || s1.top()!='(')
                    return false;
                s1.pop();
                break;
                case '}':
                    if(s1.empty() || s1.top()!='{')
                    return false;
                s1.pop();
                break;
                 case ']':
                    if(s1.empty() || s1.top()!='[')
                    return false;
                s1.pop();
                break;
            }
        }
        return s1.empty();
    }
};

括号匹配问题:

遍历所给的字符串,用一个栈将左括号存起来(栈的特性可以保证左右括号的匹配),遇到右括号则判断栈是否为空或者为相应的左括号。是的话将栈顶元素弹出,继续遍历,不是相应的左括号或者栈为空则return false。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务