zoukankan      html  css  js  c++  java
  • 括号配对问题

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <queue>
     4 #include <stack>
     5 #include <algorithm>
     6 #include <cmath>
     7 using namespace std;
     8 
     9 stack<char> q;      //保存左的符号
    10 int n;
    11 char s[10010];      //字符串
    12 
    13 int main()
    14 {
    15     int i=0,ok;     //ok标记 是否出现 ‘]'||')'||'empty()' 不匹配的情况。
    16     char ch;
    17     scanf("%d",&n);
    18     getchar();
    19     while(n--)
    20     {
    21         ok=0;     i=0;
    22         while(!q.empty())
    23             q.pop();
    24         scanf("%s",s);
    25         int len =strlen(s);
    26         while(i<len)
    27         {
    28             if('('==s[i]||'['==s[i])   {   q.push(s[i]);   i++;    }  
    29             else  {  
    30                 if(s[i]==']')           
    31                 {
    32                    if(!q.empty()&&q.top()=='[')         //如果栈为空后者栈定字符不等于'['时,表示不匹配
    33                         { 
    34                              q.pop();  i++;             
    35                         }
    36                    else
    37                         {
    38                              ok=1;   break;
    39                         }
    40                }
    41                else
    42                   if(')'==s[i])
    43                     {
    44                         if(!q.empty()&&q.top()=='(')    //如果栈为空后者栈定字符不等于'('时,表示不匹配
    45                            {
    46                               q.pop();i++;    
    47                            }
    48                         else
    49                            {
    50                               ok=1;   break;
    51                            }
    52                     }
    53                 }
    54       }
    55       if(q.empty()&&!ok)        //如果栈空并且标记为0的话 表示匹配
    56            printf("Yes
    ");
    57       else
    58           printf("No
    ");
    59     }
    60     return 0;
    61 }
    View Code

    刚开始用switch写超时,最后改成这样、时间大大改善、

  • 相关阅读:
    无刷新跨域上传图片
    php框架-yii
    nginx-url重写
    linux下挂载移动硬盘ntfs格式
    页面有什么隐藏bug:字体,图片
    Oracle、MySql、SQLServer数据分页查询
    转载:Qt之界面实现技巧
    QT常用资料
    MySQL判断字段值来确定是否插入新记录
    WindowsAPI开发常用资料
  • 原文地址:https://www.cnblogs.com/WDKER/p/5394615.html
Copyright © 2011-2022 走看看