题目描述

假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ](
)或 ( ( ) ) )均为错误的匹配。

现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “OK”,不匹配就输出“Wrong”。输入一个字符串:[([][])],输出:OK

输入

输入仅一行字符(字符个数小于255)

输出

匹配就输出 “OK” ,不匹配就输出“Wrong”。

样例输入

[(])

样例输出

Wrong

读者可以先阅读相似例题及思路

本题AC代码

#include <stack>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;bool ispair(char a,char b)
{if (a == '(' && b == ')') return true;if (a == '[' && b == ']') return true;//匹配return false;//不匹配
}int main()
{string s;while (cin >> s){if (s.empty()) {cout << "OK" << endl;continue;}else {stack<char> st;//初始化栈,类型为字符型st.push(s[0]);//将字符串的第一个元素入栈for (int i = 1;i < (int)s.size();i++){if (!st.empty() && ispair(st.top(),s[i])){//栈非空且栈顶元素与当前元素匹配st.pop();}else st.push(s[i]);}//循环完毕进行判断if (!st.empty()) cout << "Wrong" << endl;else cout << "OK" << endl;}}return 0;
}

注意:本代码必须使用cin >> s读入,否则不能AC

AC代码2

#include <stack>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>using namespace std;bool ispair(char a,char b)
{if (a == '(' && b == ')') return true;if (a == '[' && b == ']') return true;//匹配return false;//不匹配
}int main()
{string s;while (getline(cin,s)){getchar();//吃getline读入的回车,否则不能ACif (s.empty()) {cout << "OK" << endl;continue;}else {stack<char> st;//初始化栈,类型为字符型st.push(s[0]);//将字符串的第一个元素入栈for (int i = 1;i < (int)s.size();i++){if (!st.empty() && ispair(st.top(),s[i])){//栈非空且栈顶元素与当前元素匹配st.pop();}else st.push(s[i]);}//循环完毕进行判断if (!st.empty()) cout << "Wrong" << endl;else cout << "OK" << endl;}}return 0;
}

注意:本代码必须吃getline读入的回车,否则不能AC

括弧匹配检验(括号匹配问题)相关推荐

  1. c语言括号匹配的检验,检验括号匹配的算法

    用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...

  2. POJ1177矩形面积并(矩形切割+括号匹配)

    题目:http://poj.org/problem?id=1177 分析:(括号匹配)首先把矩形的上边界作为"左括号"边,下边界作为"右括号"边,然后上下排序. ...

  3. 数据结构——括号匹配问题

    括号匹配 给定一个字符串,其中的字符只包含三种括号:花括号{ }.中括号[ ].圆括号( ),即它仅由 "( ) [ ] { }" 这六个字符组成.设计算法,判断该字符串是否有效, ...

  4. 栈的应用 括号匹配 c++

    在算术表达式中,除了加.减.乘.除等运算外,往往还有括号.包括有大括号{},中括号[],小括号(),尖括号<>等. 对于每一对括号,必须先左边括号,然后右边括号:如果有多个括号,则每种类型 ...

  5. 1354:括弧匹配检验

    1354:括弧匹配检验 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 10984 通过数: 3473 [题目描述] 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意 ...

  6. 括弧匹配检验:比较基础的栈

    括弧匹配检验: 题目描述 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ) ) )均为错误 ...

  7. SSL1659 栈练习括弧匹配检验

    栈练习括弧匹配检验 Description 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ ])]等为正确的匹配,[( ])或([ ]( )或 ( ( ...

  8. 信息学奥赛一本通 1354:括弧匹配检验

    [题目链接] ybt 1354:括弧匹配检验 [题目考点] 1. 栈 [解题思路] 遍历字符串,左括号入栈,遇到右括号时,看栈顶括号与右括号是否能配对.如果两个括号都是小括号或中括号,那么二者配对,左 ...

  9. 数据结构 栈 括弧匹配检验

    括弧匹配检验 描述 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如 () 或 [([][])] 等为正确的匹配,[(]) 或( 或 (([)]) 均为错误的匹配. 现在的问题是,要 ...

最新文章

  1. 赫夫曼树建立c语言源程序编译结果详细解释,c语言构建哈夫曼树(附运行结果图)[本站推荐]...
  2. 最简单的kafka demo案例
  3. python日志模块备份_Python Logging模块 输出日志颜色、过期清理和日志滚动备份
  4. 车模型一般多少钱_婚车租赁一般多少钱?最新婚车出租价格表!
  5. 简单理解盘索引地址的表示原理
  6. Java集合框架--List、Set、Map
  7. axios 取消请求_封装 axios 取消重复请求
  8. 以snull为例分析linux网卡驱动的技术文档[转载]二
  9. Java思维导图(3)
  10. 解决chrome最新版本无法正常浏览https网页的问题
  11. python游戏趣味编程pdf-Python游戏趣味编程
  12. 服务器外置硬盘的分区格式,MacBook下移动硬盘分区配置几种格式解决方案
  13. Kubernetes PV与PVC
  14. 4.名词性从句的起源与本质
  15. 使用Hutool生成多个excel文件合并成zip压缩包下载
  16. 二、校园招聘面试过程-经验
  17. pocsuite渗透神器介绍
  18. 视觉SLAM十四讲CH8代码解析及课后习题详解
  19. 从懵懂娃娃到社会行业大佬,这中间经历的过程的概括性思考
  20. curl操作Solr5.1.0增删改查

热门文章

  1. 「Hudi系列」Hudi查询写入常见问题汇总
  2. 使用Spring Boot构建微服务(文末福利)
  3. 大数据培训班,一般需要支付多少学费?
  4. jupyter 或者 zeppelin 的下一代工具 polynote
  5. 如何在组装或维修计算机时避免静电,组装电脑怎么避免手上的静电
  6. GridView控件 Image控件 与图片的二进制数据库存储和显示
  7. [SP1839]The Bookcase
  8. 7 种模型加权集成方法
  9. 费雪信息场增量建场实际实验
  10. MVG读书笔记——单应矩阵估计这件小事(二)