代码编织梦想

项目场景:

利用栈先进后出的性质可以实现对左右括号的匹配问题。


问题描述

苗苗今天刚刚学会使用括号,不过他分不清小括号,中括号,大括号和尖括号,不知道怎么使用这些括号,请帮助他判断括号使用是否正确。

输入格式
共一行,包含一个由 <,(,{,[,>,),},] 构成的字符串。

输出格式
如果输入的字符串中的括号正确匹配则输出 yes,否则输出 no。

数据范围
输入字符串长度不超过 10000。


原因分析:

栈的性质是先进后出,可以先将左边括号存入栈中,加进来的元素与栈顶元素匹配,如果能实现匹配,则将栈顶元素出栈即可实现。


#include<iostream>
#include<algorithm>
#include<stack>
using namespace std;
const int N = 100010;
stack<char> c;

int main(){
    string str;
    cin>>str;
    for(int i=0;i<str.size();i++){
        //左边符号
        if(str[i]=='<' || str[i]=='(' || str[i]=='{' ||str[i]=='['){
            c.push(str[i]);
        }
        //右边符号
        else{
            if(c.empty()){
                cout<<"no"<<endl;
                return 0;
            }
            else if(  (str[i]=='>'&&c.top()=='<') || 
            (str[i]==')'&&c.top()=='(' ) || (str[i]=='}'&&c.top()=='{') || (str[i]==']'&&c.top()=='[') ){
               c.pop();
            } 
            else {
                cout<<"no"<<endl;
                return 0;
            }
        }
    }
    if(c.empty()) cout<<"yes"<<endl;
    else cout<<"no"<<endl;
    

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_62404686/article/details/128000827

栈应用 : 中缀表达式转后缀表达式求值-爱代码爱编程

中缀表达式 (或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。与前缀表达式(例:+ 3 4)或后缀表达式(例:3 4 +)相比,中缀表达式不容易被计算机解析,但仍被许多程序语言使用,因为它符合人们的普遍用法。 确实,中缀表达式很符合人类的思想,但是让计

数据结构_第三讲 栈与队列-爱代码爱编程

第三讲 栈与队列 理解!理解!理解! 记得看清楚 题目条件 目录 第三讲 栈与队列1. 栈和队列的基本概念2. 栈和队列的顺序存储结构3. 栈和队列的链式存储结构4. 栈和队列的应用5. 考题:2011-2、2011-3、2012-2、2013-2、2014-2、2014-3、2015-1、2016-3、2017-2、2018-1

AcWing 算法基础课学习记录(Python,备战蓝桥杯)Day1 - Day30-爱代码爱编程

 备战蓝桥杯学习路线:AcWing算法基础课->AcWing蓝桥杯课 (由于基础课和蓝桥课一共有85小时,现在每天平均是30mins到45mins,可能不是很够。从明天开始,每天看视频讲解一小时并且要消化内容,估计一起得花3-4小时。这样子差不多一月底,二月初可以结束视频课程) Day1.(2021.10.12) #Python input是输

算法题目总结:抓突破点的本质-解决问题-爱代码爱编程

学习目的:生存的更好/卷得开心,改造环境 将设计变现:算法逻辑实现,这就是编程的美妙之处(模板+输入输出的随机应变处理) 学习方法: 画图,思考,应用————>提前准备好模板和应对措施就会大大提高效率(熟练掌握,能够非常快地把代码默写出来) 做题: 1. 一定要看懂题目的前提下再做题:抓住突破点!! 2. 先写出暴力思路,然后优化思路和实

卡特兰数小练-爱代码爱编程

卡特兰数 文章目录 卡特兰数简介原理应用括号化[ 满足条件的01序列](https://www.acwing.com/problem/content/891/)栈类似问题给定节点组成二叉搜索树n对括号正确匹配数目扩展 简介 卡特兰数是组合数学中一个常出现于各种计数问题中的数列。以中国蒙古族数学家明安图和比利时的数学家欧仁·查理·卡特兰的名字

4198 最长合法括号子串(栈)-爱代码爱编程

1. 问题描述:  一个合法的括号字符串满足以下条件: 字符串"()"被认为是合法的。 如果字符串 "X" 与 "Y" 是合法的,则 "XY" 也被认为是合法的。 如果字符串 "X" 是合法的,则 "(X)" 也是合法的。 例如,"()","()()","(())" 这些都是合法的。 现在,给定一个由 ( 和 ) 组成的字符串 S。 请你求出其中的最长合

基础数据结构_zk谕的博客-爱代码爱编程

基础数据结构 文章目录 基础数据结构数据结构1.链表与邻接表:树与图的存储1.1 单链表---邻接表(存储图、树)1.2 双链表(优化某些问题)2.栈与队列:单调队列、单调栈2.1 模拟栈2.2 栈应用之表达式求值2.3 模拟队列2.4 单调栈模板2.5 单调队列之滑动窗口3.kmp4.Trie5.并查集5.1 模板5.2 朴素并查集应用5.3

template_acwing_风中寻忆_keeplearning的博客-爱代码爱编程

我是可爱的小目录~ 1.快速排序-4种2.归并排序3.二分法-整数-2种3.二分法-小数-2种4.高精度计算-加法-不压位4.高精度计算-加法-压位-待补充4.高精度计算-减法4.高精度计算-乘法4.高精度计算-除法5.前缀和<---逆向--->差分-一维5.前缀和<---逆向--->差分-二维 1.快速排序-4种

acwing模板整理(第二讲)(数据结构)_foremost1的博客-爱代码爱编程

目录 一.单链表 链表可以实现以下几个操作: 二.栈 三.队列 四.单调栈: 单调栈原理: 五.单调队列 单调队列思路: 六.KMP字符串 七.Trie(字典)树 1.Trie字符串统计(快速存储单词和查找单词数量以及是否存在) 2.Trie也可以用来记录二进制树 八.并查集(重点!!!) 九.哈希表 一.单链表 单

常用数据结构_好久不见..的博客-爱代码爱编程

数据结构 单链表 1.单链表 实现一个单链表,链表初始为空,支持三种操作: 向链表头插入一个数;删除第 k 个插入的数后面的数;在第 k 个插入的数后插入一个数。 现在要对该链表进行 M 次操作,进行完所有操作后,

栈stack_octovolib的博客-爱代码爱编程

栈的特点 1. 一种线性存储结构,先进后出。 2.限定只能在栈顶进行插入和删除操作。 s.empty();         //如果栈为空则返回true, 否则返回false; s.size();          //返回栈中元素的个数 s.top();           //返回栈顶元素, 但不删除该元素 s.pop();          

通过数据结构 -- acwing_shibuya_kanon的博客-爱代码爱编程

第二讲 数据结构 单链表 为什么要用数组模拟链表?—快! 用的最多是 邻接表(实际上是 n 个链表)–> 用来存储 图 和 树 单链表初始状态: head-> 空结点 插入数据后: head -&g

acwing周赛--字符串_算法给的安全感的博客-爱代码爱编程

题目: 给定一个由小写字母构成的字符串 s。 如果字符串中存在两个字母相同且相邻,则称它们为相同连续字母对。 我们不希望 s 中存在相同连续字母对。 所以,每当在 s 中发现一个相同连续字母对时,就应当将这对字母从 s 中删除,如果删除某一对后,出现了新的相同连续字母对,则新的对也应当被删除。 总之,最终得到的字符串中不能存在相同连续字母对。

算法基础(acwing)_krifood的博客-爱代码爱编程

算法基础 基础算法 快速排序 快速排序,背一背板子。 一点心得: 快速排序不是稳定算法快速排序时间复杂度O(nlogn),空间复杂度是O(longn)虽然没有开辟新的空间但是递归占用了栈空间。主要的优化就是在排序

洛谷or牛客数据结构+算法_洛谷 牛客-爱代码爱编程

栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈) #include <stack> #include <cstring> 栈 有关一些细节 #include &

linux 基础命令使用手册_linux使用手册下载-爱代码爱编程

作者:yxc 链接:https://www.acwing.com/activity/content/introduction/57/ 来源:AcWing 文章目录 一、常用文件管理命令二、tmux和vim1

算法基础课-爱代码爱编程

数据结构 第二章 数据结构1·链表单链表双链表 2·栈3·队列4·单调栈5·单调队列6·KMP(改进字符串匹配)7·Trie树8·并查集9·堆(讨论的是 小根堆)10·哈希表储存结构字符串哈希