【问题描述】给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足:
1)左括号必须用相同类型的右括号闭合。
2)左括号必须以正确的顺序闭合。
提示: 1 <= 串长 <= 104且 s 仅由括号 '()[]{}' 组成
【输入形式】由括号构成的字符串
【输出形式】括号匹配则输出yes、不匹配输出no
【样例输入】()
【样例输出】yes
【样例输入】()[]{}
【样例输出】yes
【样例输入】{[]}
【样例输出】yes
【样例输入】([)]
【样例输出】no
#include<iostream>
#include<string>
using namespace std;
int main()
{
string st;
cin>>st;
int i,j,k;
k=st.length();
if(st[0]==']'||st[0]=='}'||st[0]==')'||k%2==1)
cout<<"no"; //如果长度为奇数或开头为}])不满足要求
else
{
for(i=k-1; i>0; i--)
{
if(st[i]==']'&&st[i-1]=='['||st[i]==')'&&st[i-1]=='('||st[i]=='}'&&st[i-1]=='{')
{
st.erase(i-1,2);
}
k=st.length();
}
if(k==0)
cout<<"yes";
else
cout<<"no";
}
}