有效的括号

有效的括号

在这里插入图片描述
首先,先判断字符串是否为空
当字符串的长度为奇数时,比较特殊,可以直接判断为false,不需要计算
然后,我们创建一个新的栈
如果,字符串的字符是’(‘或’[‘或’{'时,入栈
如果,不是,就判断前一个字符是否为对应的括号,如果不对应,就返回false
当相对应时,出栈
其中如果第一个字符就是本应在后面的括号,直接返回false
最后判断我们创建的栈是否为空
为空则说明为true
不为空则说明为false

下面附上代码

class Solution {
 public:
  bool isValid(string s)
  {
   if (s.empty())
   {
    return true;
   }
   if (s.size() % 2 == 1)
   {
    return false;
   }
   stack<int> mystack;
   for (int i = 0; i <= s.size() - 1; i++)
   {
    if (s.at(i) == '(' || s.at(i) == '[' || s.at(i) == '{')
    {
     mystack.push(s.at(i));
    }
    else if (i != 0)
    {
     if (s.at(i) == ')')
     {
      if (mystack.top() == '(')
      {
       mystack.pop();
       continue;
      }
      else
      {
       return false;
      }
     }
     else if (s.at(i) == ']')
     {
      if (mystack.top() == '[')
      {
       mystack.pop();
       continue;
      }
      else
      {
       return false;
      }
     }
     else
     {
      if (mystack.top() == '{')
      {
       mystack.pop();
       continue;
      }
      else
      {
       return false;
      }
     }
    }
    else
    {
     return false;
    }
   }
   if (mystack.empty())
   {
    return true;
   }
   else
   {
    return false;
   }
  }
 };

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值