文章
79
粉丝
221
获赞
46
访问
198.3k
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
string s;
cin>>s;
stack <char>st;
int i;
for(i=0;i<s.size();i++){
if(s[i]=='('||s[i]=='[')
st.push(s[i]);
else{
if(st.empty())
break;
if(s[i]==')'&&st.top()=='('||s[i]==']'&&st.top()=='[')
st.pop();
}
}
if(i==s.size()&&st.empty())
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
return 0;
}
设置字符串s与存储各个字符的栈st。遍历输入的字符串s上的每一个字符,若为左括号则入栈,若为右括号时,先判断栈是否为空,不空则继续,空则退出循环,判断右括号是否和当前栈顶的左括号匹配,若匹配则栈顶元素出栈,继续遍历下个字符。遍历完成则判断是否提前退出循环与栈是否为空,若其一不满足则说明括号不匹配,都满足则输出括号匹配。
登录后发布评论
暂无评论,来抢沙发