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

    括号配对问题

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
     
    描述
    现在,有一行括号序列,请你检查这行括号是否配对。
     
    输入
    第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[", "]", "(", ")" 四种字符
    输出
    每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
    样例输入
    3
    [(])
    (])
    ([[]()])
    样例输出
    No
    No
    Yes
    算法:
    采用栈这种数据结构,遍历字符串遇到'('和'['的时候放入栈中,遇到')'和']'的时候取出栈顶元素进行对应的匹配,匹配上了就出栈,直到遍历完成,如果栈中还有剩余的元素没有出栈,那么输出NO否则输出Yes
    下面我们来看一下具体的代码
     1 #include <iostream>
     2 #include<string.h>
     3 #include<stack>
     4 using namespace std;
     5 int main()
     6 {
     7     int n;
     8     cin>>n;
     9     while(n--)
    10     {
    11         char a[10010];
    12         cin>>a;
    13         int i,l;
    14         l=strlen(a);
    15         if(l%2==1)//字符个数为奇数则肯定不匹配
    16         {
    17             cout<<"No"<<endl;
    18             continue;
    19         }
    20         stack <char> s;
    21         for(i=0;i<l;i++)
    22         {
    23             if(a[i]=='('||a[i]=='[')
    24             {
    25                 s.push(a[i]);
    26             }
    27             else
    28             {
    29                 if(!s.empty()&&s.top()=='('&&a[i]==')')
    30                 {
    31                     s.pop();
    32                     continue;
    33                 }
    34                 if(!s.empty()&&s.top()=='['&&a[i]==']')
    35                 {
    36                     s.pop();
    37                     continue;
    38                 }
    39             }
    40         }
    41         if(!s.empty())
    42         {
    43            cout<<"No"<<endl;
    44             continue;
    45         }
    46         else
    47         {
    48            cout<<"Yes"<<endl;
    49             continue;
    50         }
    51     }
    52     return 0;
    53 }

    若有不足和错误之处,欢迎兄弟们拍砖指正!!!

  • 相关阅读:
    jmeter使用—响应断言
    jmeter使用—计数器的使用
    Jmeter使用—使用 HTTP代理服务器抓取接口
    jmeter使用—远程分布式
    linux sed
    perl 文件操作
    jenkins
    perl exit (Jenkins 判断构建是否完成)
    cs ds ss fs gs 段寄存器
    ‘桌面助手’端口不匹配
  • 原文地址:https://www.cnblogs.com/yinbiao/p/8280140.html
Copyright © 2011-2022 走看看