• 南阳2--括号配对问题(栈)


    括号配对问题

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
     
    描述
    现在,有一行括号序列,请你检查这行括号是否配对。
     
    输入
    第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[","]","(",")"四种字符
    输出
    每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
    样例输入
    3
    [(])
    (])
    ([[]()])
    

      

    样例输出
    No
    No
    Yes
    来源
    网络
    //左括号以及空栈是PUSH,否则判断是否匹配,若匹配POP
     1 #include<stack>
     2 #include<cstdio>
     3 #include<cstring>
     4 using namespace std;
     5 int main()
     6 {
     7     int n;
     8     scanf("%d",&n);
     9     while(n--)
    10     {
    11         char str[100100];
    12         scanf("%s",str);
    13         int len = strlen(str);
    14         stack<char>s; int i;
    15         for(i=0;i<len;i++)
    16         {
    17             if(str[i]=='['||str[i]=='(')
    18             {
    19                 s.push(str[i]); 
    20             }
    21             else if(str[i]==']')
    22             {
    23                 if(!s.empty()&&s.top()=='[')
    24                 s.pop();
    25                 else
    26                 { s.push(str[i]); break; }
    27             }
    28             else if(str[i]==')')
    29             {
    30                 if(!s.empty()&&s.top()=='(')
    31                 s.pop();
    32                 else
    33                 { s.push(str[i]);  break; }
    34             }
    35         }
    36         if(s.empty())
    37         printf("Yes
    ");
    38         else
    39         printf("No
    ");
    40     }    
    41     return 0;
    42 }
  • 相关阅读:
    springmvc的文件上传和JWT图形验证码
    POJ 2932 Coneology计算最外层圆个数
    POJ1127 Jack Straws
    求逆序对
    P3809 【模板】后缀排序
    匈牙利算法
    POJ2976 Dropping tests
    字符串哈希
    zkw费用流
    最大流Dinic算法
  • 原文地址:https://www.cnblogs.com/soTired/p/4594322.html
Copyright © 2020-2023  润新知