有效的括号(暴力破解版)

初学栈,想着检验一下自己的听课效果。于是搞了道简单题,没想到还是做了很久。虽然过程很艰辛,但是最后看到通过所有测试点的时候还是很开心hhhh。正反馈的感觉很好,要继续加油努力啊

bool isValid(char * s){
 
  

   char j,k;

   int len=strlen(s);

   char a[len+1];//创建新字符串
   int i;
   int t=0;
   int index=1;//做标记
   for(i=0;i<len;i++)
   {
       j=s[i];
       if(j=='('||j=='['||j=='{')
       {
           a[t++]=j;
          index=0;//标记输入的是右括号
       }
      else{
          
          if(i==0&&t==0)//第一次输入就是左括号,直接返回
          {
              return false;
          }
          if((t==0&&index==1))//当栈为空,继续输入且输入为左括号,防止下标越界
          {
              return false;
          }
     
        k=a[t-1];
       if((k=='('&&j==')')||(k=='['&&j==']')||(k=='{'&&j=='}'))//与前一个符号比较
       {
           t--;//出栈
           a[t]='\0';
           index=1;//标记置为初始
       }
       else{
           return false;
       }
      
    

       
   }
   }
   
   if(t==0)
   {
      return true;
   }
   else{
      return false;
   }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值