先左括号进栈,遇到右括号进行栈顶匹配,是就弹出,否就说明多了右括号,同样在进行匹配时先进行栈的判空,若为空就说明多了右括号。
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
string s;
cin>>s;
stack<char>st;
for(int i = 0;i<s.size();i++)
{
if(s[i]=='('||s[i]=='['||s[i]=='{'||s[i]=='<')
st.push(s[i]);
else
{
if(st.empty())
{
cout<<"no";
return 0;
}
else if(s[i]==')'&&st.top()=='('||s[i]==']'&&st.top()=='['||s[i]=='}'&&st.top()=='{'||s[i]=='>'&&st.top()=='<')st.pop();
else
{
cout<<"no";
return 0;
}
}
}
if(st.empty()) cout<<"yes";
else cout<<"no";
return 0;
}