zoukankan      html  css  js  c++  java
  • STL应用 stack 计蒜客 T1655

    栈的应用。 stack 栈的存储和操作如图:

    栈的存储性质是先入后出 ,最先进入栈的数据在栈的下面,反而是后进入的数据在栈的上面
    如果有出栈的操作,后进入的数据先出栈

    这里以计蒜客 T1655 介绍栈的使用

    给出一个表达式,该表达式仅由字符(、)、+、-以及数字组成。
    请编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则返回"YES";否则返回"NO"。
    
    输入格式
    一行一个表达式,长度不超过
    2000
    
    输出格式
    若匹配,则输出"YES";否则输出"NO"
    
    Sample Input
    2+(3-4)-2-6)
    Sample Output
    NO
    

    解答
    遍历检测输入的字符串
    使用栈来记录遇到的括号 如果是'('则入栈
    如果遇到的是')' , 则将栈中顶点的'('弹出配对。 栈顶点不是'('或者栈为空,那么就说明无法匹配
    如图

    代码

    #include <iostream>
    #include <string>
    #include <stack>
    using namespace std;
    
    int main()
    {
    	string s;
    	cin >> s;
    	stack<char> ss;
    	for (auto& e : s) {
    		if (e == '(') {
    			ss.push('(');
    		}
    		else if (e == ')') {
    			if (!ss.empty() && ss.top() == '(') {
    				ss.pop();
    			}
    			else {
    				cout << "NO" << endl;
    				return 0;
    			}
    		}
    	}
    	if (ss.empty()) {
    		cout << "YES" << endl;
    	}
    	else {
    		cout << "NO" << endl;
    	}
    	return 0;
    }
    
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    对象无法注册到Spring容器中,手动从spring容器中拿到我们需要的对象
    sping,springMVC @Component 注解的对象都是单例模式,变量不能全局
    java读取项目路径下的中文文件乱码问题
    springboot集成mongoDB 异常认证
    观察者模式
    MongoDB学习笔记03
    MongoDB学习笔记02
    ajax参数中出现空格
    web并发模型
    MongoDB shell
  • 原文地址:https://www.cnblogs.com/itdef/p/15086702.html
Copyright © 2011-2022 走看看