数据结构-怀化学院期末题(56)

括号匹配的检验

题目描述:

采用栈实现,练习进栈入栈函数的编写.
输入:
输入的第一行包含一个数,n
n表示要用例的个数
接下来是n行由括号构成的字符串,包含‘(’、‘)’、‘[’、‘]’。

输出:
对每一测试用例,用一行输出结果,如果匹配,输出“YES”,否则输出“NO”

输入样例:

2
[([][]())]
)[]()

 输出样例:

YES
NO

思路:

若为左括号,入栈

若为右括号

         假如栈顶为空,则flag==false

         否则,判断栈顶元素是否与该括号匹配,不匹配则flag==false

        最后记得弹出栈顶元素

最后,判断栈是否为空,不为空,则栈中还有元素,则flag==false

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
#include<stack>
#include<map>
using namespace std;
typedef pair<int,int> PII;
const int N = 1e5 + 10;

int main(){
	int n;
	cin >> n;	
	while(n --){
		stack<char> s;
		string str;
		cin >> str;
		bool flag = true;
		for(int i = 0;i < str.size();i ++){
			if(str[i] == '(' || str[i] == '{' || str[i] == '['){
				s.push(str[i]);
			}
			else if(str[i] == ')' || str[i] == ']' || str[i] == '}'){
				if(s.empty()){
					flag = false;
					break;
				} 
				else{
					if(str[i] == ')'){
						if(s.top() != '(' ){
							flag = false;	
							break;
						}						
					}
					if(str[i] == ']' ){
						if(s.top() != '[' ){
							flag = false;
							break;
						}							
					}
					if(str[i] == '}' ){
						if(s.top() != '{' ){
							flag = false;
							break;
						}							
					}
				}
				s.pop();
			}			
		}
		if(!s.empty()) flag = false;
		if(flag == true) cout << "YES" << endl;
		else cout << "NO" << endl;
	}
	return 0;
}

 

相关推荐

  1. 数据结构-怀化学院期末56

    2024-01-09 12:52:03       52 阅读
  2. 数据结构-怀化学院期末59

    2024-01-09 12:52:03       54 阅读
  3. 数据结构-怀化学院期末58

    2024-01-09 12:52:03       61 阅读
  4. 数据结构-怀化学院期末(34)

    2024-01-09 12:52:03       50 阅读
  5. 数据结构-怀化学院期末(489)

    2024-01-09 12:52:03       54 阅读
  6. 数据结构-怀化学院期末

    2024-01-09 12:52:03       50 阅读
  7. 数据结构-怀化学院期末(1321)

    2024-01-09 12:52:03       62 阅读
  8. 数据结构-怀化学院期末

    2024-01-09 12:52:03       45 阅读
  9. 数据结构-怀化学院期末(490)

    2024-01-09 12:52:03       53 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-09 12:52:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-09 12:52:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-09 12:52:03       87 阅读
  4. Python语言-面向对象

    2024-01-09 12:52:03       96 阅读

热门阅读

  1. vue项目中px单位转rem插件

    2024-01-09 12:52:03       63 阅读
  2. 微服务架构+服务注册中心+Nacos和Eureka+比较分析

    2024-01-09 12:52:03       60 阅读
  3. Spring Boot CLI 中文文档

    2024-01-09 12:52:03       66 阅读
  4. 编程语言--C/C++、python

    2024-01-09 12:52:03       49 阅读
  5. C++类模板分文件编写

    2024-01-09 12:52:03       64 阅读
  6. 【复习】人工智能 第一章 绪论

    2024-01-09 12:52:03       50 阅读
  7. 系列一、 单例设计模式

    2024-01-09 12:52:03       56 阅读
  8. 安卓多用户管理之UserManagerService.UserData类

    2024-01-09 12:52:03       62 阅读
  9. 面试 React 框架八股文十问十答第二期

    2024-01-09 12:52:03       64 阅读