Leetcode20 有效的括号

有效的括号

栈的定义

栈是只允许在一端进行插入或者删除的线性表。
栈顶是线性表允许插入或删除的一端,栈底是不允许进行插入和删除的一端。
栈的操作特性可以概括为后进先出

STL中stack的用法

empty();// 堆栈为空则返回真
pop(); // 移除栈顶元素
push(); //在栈顶增加元素
size(); // 返回栈中元素数目
top(); //返回栈顶元素

解题思路

利用栈后进先出的特性
若碰到’(’ ‘[’ '{'时把对应的括号压入栈中
若是可匹配的括号,将栈顶元素移除;若不是可匹配的括号或此时栈中已经为空,则返回false;
字符判断完毕后,如果满足题意,栈中应该为空。

代码

class Solution {
public:
    bool isValid(string s) {
         stack <char> sta;
         for(int i=0;i<s.size();i++){
             if(s[i]=='(') sta.push(')');
             else if(s[i]=='[') sta.push(']');
             else if (s[i]=='{') sta.push('}');
             else if (sta.empty() || sta.top()!=s[i]) return false;
             else if(sta.top()==s[i]) sta.pop();
         }
         return sta.empty();
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值