stl stack做一个字符串中的括号匹配
2015-08-23 21:16
148 查看
//:检测表达式中的字符,若是左括号就入栈,
//如果是右括号就出栈一个元素与其配对,配对成功则继续访问下一个字符,否则退出。出现非括号字符则跳过。
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
stack<char> s;
int flag=1;
string a;
getline(cin,a);
int i;
int len=a.size();
string b;
for(i=0;i<len;i++)
{
if(a[i]=='('||a[i]=='['||a[i]==')'||a[i]==']')
b+=a[i];
}
int len1=b.size();
for(i=0;i<len1;i++)
{
if(b[i]=='('||b[i]=='[')
{
s.push(b[i]);
}
else
{ if(s.empty())
{flag=0;
break;}
if(b[i]==')')
{ if(s.top()=='(')
s.pop();
else
{ flag=0;
break;}
}
if(b[i]==']')
{ if(s.top()=='[')
s.pop();
else
{ flag=0;
break;}
}
}
}
if(!s.empty())
flag=0;
cout<<flag;
system("pause");
return 0;
}
//如果是右括号就出栈一个元素与其配对,配对成功则继续访问下一个字符,否则退出。出现非括号字符则跳过。
#include<iostream>
#include<stack>
#include<string>
using namespace std;
int main()
{
stack<char> s;
int flag=1;
string a;
getline(cin,a);
int i;
int len=a.size();
string b;
for(i=0;i<len;i++)
{
if(a[i]=='('||a[i]=='['||a[i]==')'||a[i]==']')
b+=a[i];
}
int len1=b.size();
for(i=0;i<len1;i++)
{
if(b[i]=='('||b[i]=='[')
{
s.push(b[i]);
}
else
{ if(s.empty())
{flag=0;
break;}
if(b[i]==')')
{ if(s.top()=='(')
s.pop();
else
{ flag=0;
break;}
}
if(b[i]==']')
{ if(s.top()=='[')
s.pop();
else
{ flag=0;
break;}
}
}
}
if(!s.empty())
flag=0;
cout<<flag;
system("pause");
return 0;
}
相关文章推荐
- 生成1000万行7位数字文件(编程珠玑)
- 树——主席树
- 根据查询结果创建新表create table .. as (select....)
- HDU 4465 Candy (数学期望)
- 阿里云全球增速最快 华尔街分析师称赞阿里布局
- 火狐浏览器安装有道翻译插件
- 交叉工具链
- SQL Server之存储过程基础知识
- 第十三章 动画引擎
- 用python进行数据预处理,过滤特殊符号,英文和数字。(适用于中文分词)
- Android扫描sd卡和系统文件
- Android MediaScanner
- postgresql创建用户
- Binary Tree Postorder Traversal——重要的基本的算法
- var_export 与 var_dump的不同
- AutoCAD2014打开闪退的解决办法
- 分段压缩
- python笔记 4
- Ubuntu学习之Linux文件和目录管理
- HDU1024 Max Sum Plus Plus(DP动态规划 最大子串和增强版)