您的位置:首页 > 其它

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: