文章

79

粉丝

221

获赞

45

访问

166.4k

头像
括号匹配(仅有[]与())
P1501 西北工业大学2015机试题
发布于2023年3月24日 10:20
阅读数 2.0k

#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上的每一个字符,若为左括号则入栈,若为右括号时,先判断栈是否为空,不空则继续,空则退出循环,判断右括号是否和当前栈顶的左括号匹配,若匹配则栈顶元素出栈,继续遍历下个字符。遍历完成则判断是否提前退出循环与栈是否为空,若其一不满足则说明括号不匹配,都满足则输出括号匹配。

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发