[Leetcode 20, Easy] Valid Parentheses

本文介绍了一个使用栈数据结构解决括号匹配问题的经典算法。通过分析输入字符串中的括号类型及顺序,确保每一对括号都能正确闭合。文章提供了C++实现方案,并详细解释了如何利用栈来检查括号是否有效配对。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ProblemGiven a string containing just the characters '('')''{''}''[' and ']', determine if the input string is valid.

The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

Analysis: A typical problem that uses stacks.

Note: For the function string::append(const char* pStr), it will append thewhole c-formatted-string associated by pStr to the string, but not the char pointed by the pointer pStr. For the second purpose, we need the function string::append(const char* pStr, int size).

Solution:

C++:

class Parentheses_Stack {
    public:
        void push(const char& paren) { stack.append(&paren, 1); }
        char pop() {
            char rChar('\0');
            if(stack.empty())
                return rChar;
                
            rChar = stack[stack.size() - 1];
            stack.erase(stack.end() - 1);
            return rChar;
        }
        bool IsEmpty() { return stack.empty(); }
    private:
        string stack;    
    };

    bool isValid(string s) {
        Parentheses_Stack stack;
        for(int i = 0; i < s.size(); ++i)
            if(s[i] == '(' || s[i] == '[' || s[i] == '{')
                stack.push(s[i]);
            else if((s[i] == ')' && stack.pop() != '(') || 
                    (s[i] == ']' && stack.pop() != '[') || 
                    (s[i] == '}' && stack.pop() != '{'))
                    return false;

        if(!stack.IsEmpty())
            return false;

        return true;
    }


Jave:


Python:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值