博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
括号匹配的栈实现
阅读量:6644 次
发布时间:2019-06-25

本文共 905 字,大约阅读时间需要 3 分钟。

括号匹配的栈实现

 

问题:判断一个文本中,括号是否匹配?

思路:从头到尾扫描字符串,每次遇到左括号(如'(', '[', '{')就压入堆栈,如果遇到右括号(如')', ']', '}')就与栈顶元素比较,如果成对,OK,否则判断不匹配。

 

代码如下:

#include 
#include
#include
#include
using namespace std;/* * vaild return true, else return false */bool judge_bracket(const string & str){ stack
st; set
left; set
right; left.insert('('); left.insert('['); left.insert('{ '); right.insert(')'); right.insert(']'); right.insert('}'); for (int i=0; i!=str.size(); i++) { set
::iterator it1 = left.find(str[i]); set
::iterator it2 = right.find(str[i]); if (it1 != left.end()) { // match left st.push(str[i]); } else if (it2 != right.end()) { // match right if (st.size() == 0 ) return false;  // stack is empty if (str[i] - st.top() <= 2 ) {    // 右括号的ASCII码比其成对的左括号大1或2 st.pop(); } else { cout << "str[i]=" << str[i] << "top=" << st.top() <

 

转载地址:http://lxevo.baihongyu.com/

你可能感兴趣的文章
A+B for Input-Output Practice (II)
查看>>
精美高清壁纸:2013年1月桌面日历壁纸免费下载
查看>>
Extjs Dom
查看>>
new与delete
查看>>
Unitils+hibernate+Spring+PostgreSql做dao层测试遇到的错误
查看>>
关于MVC使用Code-First代码优先来先建实体类中间添加新字段不需要重新建立数据库的方法...
查看>>
【SAS NOTES】字符串处理函数
查看>>
constellio——基于solr的开源搜索引擎系统源码研究(四)
查看>>
PS制作流星效果
查看>>
Windows Phone HttpWebRequest
查看>>
建造者模式 - 设计模式学习
查看>>
企业搜索引擎开发之连接器connector(七)
查看>>
.NET应用加载容器KGlue
查看>>
A.9- ASP.NET 中的验证控件(Validator)
查看>>
Ext JS 下载 及 是否收费
查看>>
DIV CSS 网页兼容全搞定 (IE6 IE7 IE8 IE9 火狐 谷歌)
查看>>
linux下网络问题综述
查看>>
数字百位nbut 1407 1到n的数中 1出现的次数
查看>>
输出问题问题一百二十八:IBM Minus One
查看>>
矩阵乘法C语言实现
查看>>