其实这个代码我一好几天前就开始写了,一开始用c写,但是发现用c写一个正解应该用栈解决的c++问题对于一个焫鷄来讲就好比刚学会汉语拼音然后让你写英语作文的感觉,唉,今天就转手用c++来写。

栈还没大学明白,只知道栈是一个容器,每存入一个数据就会被放置在栈顶,然后栈顶的数据可以被弹出,于是乎就开始写了。

不怕丢人,给你们看一下我有多蠢(虽然中间有吃晚饭的时间,并且第一次的结尾判断通过还是看的题解。虽然一开始的灵感是来自题解,但是越到后面就逐渐理解了这个思路)。

#include<iostream>
#include<string>
#include<stack>
#include<cstdio>
using namespace std;
stack<char> stk;//第一个栈是用来存放左括号的
stack<char> sdk;//第二个栈是用来存放右括号的
string s;int main()
{cin >> s;for (int i = 0; i < s.size(); i++)//遍历还不是很会用,还是选择了现在唯一感觉学得比较明白的循环{if (s[i] == '(' || s[i] == '{' || s[i] == '[') stk.push(s[i]);//如果输入的是左括号的话,就进栈stkif (s[i] == ')' || s[i] == '}' || s[i] == ']') {char t = s[i];sdk.push(t);//如果输入的是右括号的话,就进栈sdk,这里是为了下面判断是否一一对应的一个关键,这个真的是解这个题的关键} if (s[i] == ')' && !stk.empty() && stk.top() == '(') {stk.pop(); sdk.pop();//如果在后面遇到了右括号且stk不为空且遇到了对应的左括号就讲stk,sdk两个栈的栈顶元素都删掉,下面几个else if也是如此}else if (s[i] == '}' && !stk.empty() && stk.top() == '{') {stk.pop(); sdk.pop();}else if (s[i] == ']' && !stk.empty() && stk.top() == '[') {stk.pop(); sdk.pop();}}if (stk.empty()&&sdk.empty())//这一步的判断最为重要,保证两个栈的元素全为空才能保证一一对应,这样写的一个好处就是不用单独判断只输入一个符号的单独输出printf("yes\n");else printf("no\n");return 0;
}

唉,生活不易,继续努力

c++ 之 括号匹配(栈)相关推荐

  1. H - Streets of Working Lanterns Gym - 101149H -括号匹配-栈模拟

    H - Streets of Working Lanterns Gym - 101149H 题意:括号匹配,有很多"?",这些"?"可以凑成任意一种,判断最后能 ...

  2. NyistOJ 2 括号匹配(栈)

    NyistOJ 2 括号匹配 简单的栈的应用问题,利用STL中的栈来解决,当然-也可以自己手写栈.思路就是遇到左括号进栈,遇到右括号首先判断栈是否为空,若为空直接将这个右括号进栈,当然此时也就不匹配了 ...

  3. 括号匹配(栈和队列)

    #include<iostream> #include<stack> #include<string> using namespace std; int main ...

  4. python实现括号匹配不用栈_使用Python实现栈,判断括号是否平衡

    栈(Stack)在计算机领域是一个被广泛应用的集合,栈是线性集合,访问都严格地限制在一段,叫做顶(top). 举个例子,栈就想一摞洗干净的盘子,你每次取一个新盘子,都是放在这一摞盘子的最上头,当你往里 ...

  5. c语言括号匹配的检验,检验括号匹配的算法

    用栈实现检验括号匹配的算法没啥具体描述,数据结构的知识,急用,有重赏 思想是 先进栈,获取第一个半边括号,标记一下,继续进栈直到获取到第二个与之匹配的另一外括号,然后出栈,取出内容.就这样.. 数据结 ...

  6. 栈 -- 顺序栈、链式栈的实现 及其应用(函数栈,表达式求值,括号匹配)

    文章目录 实现 顺序栈实现 链式栈实现 应用 函数栈 的应用 表达式求值中 的应用 括号匹配中 的应用 我们使用浏览器的时候经常会用到前进.后退功能. 依次访问完一串页面 a – b – c之后点击后 ...

  7. P1944 最长括号匹配(栈模拟/DP)

    P1944 最长括号匹配 可以直接用栈模拟,把匹配好的标记一下, 最后找到最长的匹配输出即可. 如果是要求最长的长度的题那么只需要求数就行了,没必要把原序列真的按照题意改变 如果要求序列,那么只需要按 ...

  8. 2.2栈的另一个应用:括号匹配

    2.2栈的另一个应用:括号匹配 1.LeetCode官网 美网:https://leetcode.com/ 中文网 :https://leetcode-cn.com/ 英语不咋地,所以选择此处选择中文 ...

  9. python 栈_Python数据结构与算法05:基本结构:栈的应用之括号匹配

    注:本文如涉及到代码,均经过Python 3.7实际运行检验,保证其严谨性. 本文阅读时间约为7分钟. 算法流程 括号匹配情况介绍 我们经常会遇到类似(9-1)*(8+7)/(4-2).print(& ...

  10. sdut 2134 数据结构实验之栈与队列四:括号匹配

    数据结构实验之栈与队列四:括号匹配 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descript ...

最新文章

  1. 网易云信详解B2B企业借力敏捷营销的高增长之道
  2. python 皮尔森相关系数
  3. 一个利用System.gc和finalize研究Java垃圾回收机制的练习
  4. 支持向量机SVM算法原理及应用(R)
  5. WCF添加服务失败一则
  6. WPF中如何重新定义Main函数
  7. 没有文件扩展“.vbs”的脚本引擎的解决方案
  8. Android官方开发文档Training系列课程中文版:线程执行操作之定义线程执行代码...
  9. Java速成:Boot入门
  10. linux系统打开m3u8文件,Linux下载m3u8流视频并合并ts文件
  11. Ubuntu20.04安装ZOOM
  12. 图片文字识别如何实现
  13. Lightbox JS 用法
  14. 每日新闻丨​iPhone11成败关系全球众多供应商下一张饭票
  15. 简述php语言的特点是_PHP是什么语言?有什么的特点?
  16. 打开或关闭windows功能时,提示“出现错误。并非所有的功能被成功更改” 已解决
  17. Bug的级别,按照什么划分
  18. 男人买鞋有点难——中国十大皮鞋
  19. PyQt5 的textedit下的setPlainText()和setText区别
  20. C#,数值计算,求解微分方程的吉尔(Gear)四阶方法与源代码

热门文章

  1. 中国建筑装饰装修——刘昊威设计作品:切尔西·扬画廊
  2. 【SecureCRT】SecureCRT 绝佳配色方案, 保护你的眼睛
  3. WUST2020部分WP
  4. 【定时任务】- 基础篇
  5. 2020-10-7 CCNA学习笔记
  6. 编程逻辑性思维的重要性
  7. nz-zorro 主题切换 动态
  8. 远程同步软件rsync(一)
  9. 老男孩每日一题(一)
  10. 算数基本定理和代数基本定理