06Leetcode--valid parentheses

本文介绍了一种使用栈数据结构来验证括号序列是否有效的方法。通过遍历输入字符串并利用栈来匹配成对出现的括号,可以高效地解决这一问题。

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

 

现有一串(,),[,],{,}的字符串s。要判断这串字符串是不是一串有效的组合。如[]{()}是遗传有效的组合。[)[]}是一串无效的组合。

这个问题的解法不难,只要用一个stack就可以了,我们把s里面的字符一个一个过一遍。主要分为2种情况

1 如果我们遇到 ( [ { 里面的一个,我们就把这个字符放入stack里面。

2 如果我们遇到 ) ] } 里面的一个,我们就把这个字符和stack最顶端的字符进行比较

     (a)  如果遇到的字符和stack顶端字符相等,我们把stack顶端的字符去掉,然后继续比较字符串的下一个

     (b)  如果遇到的字符和stack顶端的不相等,我们就返回false。

bool isValid(string s)
{
    stack<char> parenthese;
    for(int i=0; i<s.size(); i++){
        if(s[i]=='(' || s[i]=='[' || s[i]=='{')    //压栈
            parenthese.push_back(s[i]);
        else{
            if(parenthese.empty()) return false;
            if(s[i]==')' && parenthese.top()!='(') return false;  //取栈顶元素进行比较
            if(s[i]==']' && parenthese.top()!='[') return false; 
            if(s[i]=='}' && parenthese.top()!='{') return false;
            parenthese.pop();  //更新栈顶元素
        } 
    }
    return true;
}

reference:

               1.  blog.sina.com.cn/s/blog_60b5450101016plz.html

               2. www.cnblogs.com/grandyang/p/4424587.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值