zoukankan      html  css  js  c++  java
  • nyoj 2 括号配对问题(栈)

    括号配对问题

    时间限制:3000 ms  |  内存限制:65535 KB |难度:3
     
    描述
       现在,有一行括号序列,请你检查这行括号是否配对。
    输入
       第一行输入一个数N(0<N<=100),表示有N组测试数据。后面的N行输入多组输入数据,每组输入数据都是一个字符串S(S的长度小于10000,且S不是空串),测试数据组数少于5组。数据保证S中只含有"[", "]", "(", ")" 四种字符。
    输出
      每组输入数据的输出占一行,如果该字符串中所含的括号是配对的,则输出Yes,如果不配对则输出No
    /**
         分析:1、用到数据结构栈(stack);
              2、如果遇到 ‘[’ or '(' 进栈;
              3、如果遇到 ']' or ')'判断stack.top()是否与其配对
              4、空栈入 ']' or ')' 违法
              5、其他情况违法
    **/

    C/C++代码实现:

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <stack>
     5 
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     int N;
    11     cin >>N;
    12     while (N --)
    13     {
    14         stack <char> stackChar;
    15         string A;
    16         bool judgeBrack=true;
    17         cin >>A;
    18 
    19         for (int i=0; i<A.size(); ++i)
    20         {
    21             if (A[i] == '[' || A[i] == '(') // 如果新放入的数据是[,(都进栈
    22             {
    23                 stackChar.push(A[i]);
    24             }
    25             else
    26             {
    27                 if(stackChar.empty())
    28                 {
    29                     judgeBrack = false;
    30                     break;
    31                 }
    32                 if ((A[i] == ']' && stackChar.top() == '[')
    33                     ||(A[i] == ')' && stackChar.top() == '('))
    34                         stackChar.pop();
    35                 else
    36                 {
    37                     judgeBrack = false;
    38                     break;
    39                 }
    40             }
    41         }
    42 
    43         //PS: 最后的判断中,如果stack里面还有字符也说明,是不匹配的 stackChar.size()
    44         (!judgeBrack || stackChar.size())? cout <<"No" <<endl: cout<< "Yes" <<endl;
    45     }
    46     return 0;
    47 }
  • 相关阅读:
    vi 命令
    element-ui + el-dialog + Vue.component 注册的tinymce富文本控件 第二次及以后打开dialog出现问题解决方法
    【经典数据结构】哈希表
    TCP建立连接与释放连接过程中的几个问题
    【算法题目】求二叉树中节点的最大距离
    字符串处理函数
    [LeetCode] Balanced Binary Tree
    [LeetCode] N-Queens II
    [LeetCode] N-Queens
    【linux使用】bash shell命令行常用快捷键
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/8920589.html
Copyright © 2011-2022 走看看