题目描述

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

现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配?输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 “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. mysql5.6热升级_mysql 5.6 后热数据的加载
  2. 这就是芬兰:先让全国1%的人学起AI!
  3. 使用淘宝的IP查询API实现IP地址省市展示
  4. Linux动态加载共享库,Linux共享库的动态加载(附测试案例)
  5. ARMS V4.3发布,应用监控全新支持内存快照分析,全息排查等功能。
  6. MySQL线程共享内存参数
  7. chrome自动调节窗口大小插件_高效使用Chrome浏览器,教你10个小技巧!
  8. linux设置共享权限设置命令,Linux系列知识详解(三)--------- Linux链接命令和权限管理命令...
  9. 让远程协助在局域网里无处不在
  10. 方法重写(Java篇)
  11. html5 --- 使用javascript脚本控制媒体播放
  12. c语言江宝钏实验六答案,C语言程序设计江宝钏著实验六答案
  13. 物联卡可以持续使用的时间有多久?
  14. JSON格式错误报JSON parse error:
  15. 数字电路基础(四) 数据分配器、数据选择器和数值比较器
  16. linux开发板通过网线连接电脑
  17. html中动态添加元素属性值,JavaScript实现动态添加、移除元素或属性的方法分析...
  18. jQuery计算时间差和阴阳历转换
  19. 马王堆汉墓帛书‧老子——乙本释文(道经)
  20. 改善记忆力的二十种记忆方法,随便你挑!

热门文章

  1. composer总结
  2. python随机生成英文字符串_如何用Python语言生成随机字符串 | 学步园
  3. 社会工程学与APT攻击之——社工邮件钓鱼分析
  4. 软考是什么?为什么要考?
  5. Nginx访问限制配置
  6. Java邮件发送QQ邮箱带附件
  7. geoserver离线地图服务搭建和图层发布
  8. CSDN:借助工具对【本博客访问来源】进行数据图表可视化(网友主要来自欧美和印度等)——记录数据来源截止日期20190811
  9. 计算机上计算器不见,win10系统自带的计算器不见了的处理教程
  10. Qt中的UI文件介绍