简单的括号匹配问题
问题描述:
假如有一堆括号(当然最简单的只包括 ’ ( ’ , ’ ) ’ ),一个’(‘只能匹配一个’)’,并且匹配的括号不可以交叉,只能嵌套,请问能不能正好一左一右的匹配成功?
输入格式
一行输入一个字符串只含有’(‘和’)’,输入的字符串长度不大于 50000。
输出格式
如果输入括号不能匹配,输出一行"no",否则输出一行"yes"。
直接调用stl中的栈(stack)。
#include<bits/stdc++.h>
using namespace std;
int main()
{
stack<char>q;
string s;
cin>>s;
int l = s.length();
bool flag=true;
int i=0;
for(i=0;i<l;i++){
if(s[i] == '('&&flag==true){
q.push(s[i]);
}
if(q.empty()){
flag = false;
break;
}
if(s[i] == ')'){
q.pop();
}
//cout<<i<<endl;
}
if(q.empty()&&i==l){
cout<<"yes"<<endl;
}
else{
cout<<"no"<<endl;
}
return 0;
}