题解 | 括号的匹配

括号的匹配

https://www.nowcoder.com/practice/78f297134b0c4af09fb88218321c3fcc

不会用map建立检查顺序,就直接简单粗暴写逻辑检验

#include <bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define int long long

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

signed main() {
	int t;
	cin>>t;
	while(t--)
	{
	string str;
	cin>>str;
	stack<char> pk;
	int bj=1;
	for(int i=0;i<str.size();i++)
	{
		if(str[i]=='['||str[i]=='<'||str[i]=='('||str[i]=='{')
		{
			if(str[i]=='[')
			{
				if(!pk.empty())
				{
					if(pk.top()!='{'&&pk.top()!='[')
					{
						cout<<"NO"<<endl;
						bj=0;
						break;
					}
				}
			}
			if(str[i]=='(')
			{
				if(!pk.empty())
				{
					if(pk.top()!='{'&&pk.top()!='['&&pk.top()!='(')
					{
						cout<<"NO"<<endl;
						bj=0;
						break;
					}
				}
			}
			if(str[i]=='<')
			{
				if(!pk.empty())
				{
					if(pk.top()!='{'&&pk.top()!='['&&pk.top()!='('&&pk.top()!='<')
					{
						cout<<"NO"<<endl;
						bj=0;
						break;
					}
				}
			}
			if(str[i]=='{')
			{
				if(!pk.empty())
				{
					if(pk.top()!='{')
					{
						cout<<"NO"<<endl;
						bj=0;
						break;
					}
				}
			}
			pk.push(str[i]);
			continue;
		}
		if(str[i]=='>')
		{
			if(pk.empty())
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}else
			{
			if(pk.top()=='<') 
			{
				pk.pop();
			}else
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}
		}
		}
		if(str[i]==']')
		{
			if(pk.empty())
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}else
			{
			if(pk.top()=='[') 
			{
				pk.pop();
			}else
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}
		}
		}
		if(str[i]==')')
		{
		if(pk.empty())
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}else
			{
			if(pk.top()=='(') 
			{
				pk.pop();
			}else
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}
		}
		}
		if(str[i]=='}')
		{	if(pk.empty())
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}else
			{
			if(pk.top()=='{') 
			{
				pk.pop();
			}else
			{
				cout<<"NO"<<endl;
				bj=0;
				break;
			}
		}
		}
	}
	if(bj)
	{
		cout<<"YES"<<endl;
	}
}
	
}

全部评论

相关推荐

小浪_Coding:1. 个人技能排版太乱, 写的技术栈太浅了, 跟测试,自动化相关的太少; 2. 项目开发类的太简单没有亮点, 算法类的项目建议只放一个,最好有自动化,CI/CD, pipline的项目, 需要更换; 3.整体排版需要优化, SOOB打招呼都需要注意等.
我的简历长这样
点赞 评论 收藏
分享
LZHR:老哥你从投递简历测评完到一面中间隔了多久呀,我这边已经过了五天了仍显示简历筛选中是不是就是挂了
腾讯求职进展汇总
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务