zoukankan      html  css  js  c++  java
  • 括号匹配(C++ Stack)

    最近在学习C++,所以使用stack容器来实现括号匹配

     1 /**********************************************************/
     2 stack<Typet>Num;      /*定义一个Typet类型的栈*/
     3 Num.push(STR[i]);    /*入栈,把元素压入栈中*/
     4 Num.pop();           /*无返回值,弹出栈顶*/
     5 Num.top();           /*访问栈顶元素,栈不能为空,否则报错*/
     6 /**********************************************************/
     7 #include <iostream>
     8 #include <stack>
     9 #include <stdio.h>
    10 #include <string.h>
    11 using namespace std;
    12 char STR[3000005];
    13 int main()
    14 {
    15     int Len;
    16     while(scanf("%s",STR)!=EOF) /*输入一串字符串*/
    17     {
    18         stack<char>Num;         /*每次定义一个栈*/
    19         Len=strlen(STR);        /*求字符串长度*/      
    20         for(int i=0;i<Len;i++)
    21         {
    22             if(!Num.empty()&&(STR[i]-Num.top()==1||STR[i]-Num.top()==2))/*当栈不为空且能够匹配时*/
    23             {
    24                 Num.pop();      /*出栈*/
    25             }
    26             else
    27             {
    28                 Num.push(STR[i]);        /*否则入栈*/
    29                 if(STR[i]==')'||STR[i]=='}'||STR[i]==']'||STR[i]=='>')break; /*判断入栈的元素为右括号,则不需要再判断*/
    30             }
    31         }
    32         if(Num.empty())printf("YES
    ");/*栈为空则说明全部能够匹配*/
    33         else printf("NO
    ");           /*否则不能够匹配*/
    34     }
    35     return 0;
    36 }
    View Code
    转载请备注:
    **************************************
    * 作者: Wurq
    * 博客: https://www.cnblogs.com/Wurq/
    * Gitee: https://gitee.com/wurq
    **************************************
  • 相关阅读:
    Hbase 统计行数的四种方式
    Solr、MongoDB和Hadoop比较
    三种方法更改MAC OS X下的HOSTS文件
    史上最全前端面试题(含答案)
    图文-水平垂直居中兼容ie6+
    CSS3动画
    jQuery延迟加载(懒加载)插件 – jquery.lazyload.js-Web前端(W3Cways.com)
    web app变革之rem
    MAC中通过gem命令安装compass
    mac下升级ruby环境版本
  • 原文地址:https://www.cnblogs.com/Wurq/p/4426125.html
Copyright © 2011-2022 走看看