每日一刷——10.14——括号匹配(手写栈来实现)

栈与队列题目

第一题

题目

问题描述】设计一个算法判别一个算术表达式的圆括号是否正确配对

【输入形式】一个以@为结尾的算术表达式
【输出形式】若配对,则输出圆括号的对数;否则输出no

【样例输入】
(a+b)/(c+d)@

【样例输出】
2
【样例说明】共有两对括号,输出2

#include <iostream>
using namespace std;template <class T>
class stack{   //这里不需要写<T> public:	stack(int max);bool Push(T& a);bool Pop();T top();private:int max;int count;int front; T* element;
};template <class T>
stack<T>::stack(int max){element = new T[max];   //这里要写T类型的数组 front=-1;count=0;
}
template <class T>
bool stack<T>::Push(T& num){count++;front++;element[front]= num;      //element怎么用?? return true;
}template <class T>
bool stack<T>::Pop(){front--;count--;return true;
}template <class T> 
T  stack<T>::top(){return element[front];
}int main(){string str;int flag=1,count=0;stack<char> s(10);getline(cin,str,'@');for(int i=0;i<str.length();i++){if(str[i]=='(')s.Push(str[i]);else if(str[i]==')'){if(s.top()=='('){s.Pop();count++;}else{flag=0;break;}}} if(flag==0)cout<<"no"<<endl;elsecout<<count<<endl;
} 

样例不通过的点:

 看来没有正确输出没有一对括号都没有的结果

分析:

但是我欠缺考虑了多了左括号和多了右括号的情况!!!!

1.当左括号多余时,那么就是前面的括号全部抵消之后,但是最后栈里边还有元素
2.当右括号多余时,那么就是当右括号还想匹配时,却发现栈已经空了,这两种情况都是我需要考虑的,所以经过改进之后

代码如下

#include <iostream>
using namespace std;//只要理清楚了,就很简单的,说服自己,但是身体好累 template <class T>
class stack{   //这里不需要写<T> public:	stack(int max);bool Push(T& a);bool Pop();T top();int Size();private:int max;int count;int front; T* element;
};template <class T>
stack<T>::stack(int max){element = new T[max];   //这里要写T类型的数组 front=-1;count=0;
}template <class T>
int stack<T>::Size(){return count;
}template <class T>
bool stack<T>::Push(T& num){count++;front++;element[front]= num;      //element怎么用?? return true;
}template <class T>
bool stack<T>::Pop(){front--;count--;return true;
}template <class T> 
T  stack<T>::top(){return element[front];
}int main(){string str;int flag=1,count=0;stack<char> s(10);getline(cin,str,'@');for(int i=0;i<str.length();i++){if(str[i]=='(')s.Push(str[i]);else if(str[i]==')'){if(s.top()=='('){s.Pop();count++;}else if(s.Size()==0){flag=0;break;}else{flag=0;break;}}} if(s.Size()!=0)cout<<"no"<<endl;   else if(flag==0)cout<<"no"<<endl;elsecout<<count<<endl;
} 

最主要是改变了一下下边这样的两个判断输出语句

if(s.top()=='('){s.Pop();count++;}else if(s.Size()==0){flag=0;break;}else{flag=0;break;}if(s.Size()!=0)cout<<"no"<<endl;   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/446942.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习Redisson实现分布式锁

官网&#xff1a;https://redisson.org/ 官方文档&#xff1a;https://redisson.org/docs/getting-started/ 官方中文文档&#xff1a;https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95 1、引入依赖 <!--redisson--> <dependency><groupId>or…

【软件工程】数据流图DFD

文章目录 数据流图DFD概述一、数据流图的基本元素二、数据流图的绘制步骤三、数据流图的分层设计四、数据流图的绘制原则五、数据流图的应用 一个完整的数据流包含哪些要素从图中找出所有数据流1. **理解数据流图的结构**2. **识别外部实体**3. **追踪数据流**4. **记录数据流*…

SAP S/4 HANA 销售返利

目录 1 简介 2 后台配置 3 主数据 4 业务操作 4.1 场景 1 - 返利应计 4.2 场景 2 - 最终结算 1 简介 在过去 SAP ECC 把“返利”功能集成在了 SD 模块当中&#xff0c;而 SAP S/4 HANA 把“返利”集成在了结算管理功能模块当中。究其原因&#xff0c;主要是 ECC “返利”…

笔记-stm32移植ucos

文章目录 一、UCOS的基础知识1.1 前后台系统:1.2 RTOS系统可剥夺型内核:前后台系统和RTOS系统 1.3 UCOS系统简介学习方法 二、ucossii移植Step1&#xff1a;在工程中建立存放UCOSS代码的文件夹UCOSIIStep2:向CORE文件夹添加文件Step3:向Config文件夹添加文件Step4:向port文件夹…

本地拉取Docker镜像打包导入远程服务器

起因是因为使用远程服务器拉取镜像时&#xff0c;由于网络问题一直拉不成功&#xff0c;使用国内镜像由于更新不及时&#xff0c;国内镜像没有最新的 docker 镜像。最后使用本地的计算机&#xff0c;通过代理下载最新的镜像后打包成 tar&#xff0c; 然后上传到远程服务器进行导…

electron-vite打包踩坑记录

electron-vite打包踩坑记录 大前端已成趋势&#xff0c;用electron开发桌面端应用越来越普遍 近期尝试用electronvite开发了个桌面应用&#xff0c;electron-vite地址&#xff0c;可用使用vue开发&#xff0c;vite打包&#xff0c;这样就很方便了 但是&#xff0c;我尝试了一…

【机器学习】并行计算(parallel computation)Part1

为什么我们在机器学习中需要用到并行计算呢&#xff0c;因为现在最流行的机器学习算法都是神经网络&#xff0c;神经网络模型的计算量、参数量都很大&#xff0c;比如ResNet-50参数量为25M。而我们在训练的时候使用的数据集也很大&#xff0c;比如ImageNet数据集含有14M张图片。…

FileInputStream类

目录 1.案例代码&#xff1a; 2.注意细节 3.FileInputStream循环读取 1.案例代码&#xff1a; 准备的txt文件 结果&#xff1a; 如果需要输出原本的字母&#xff0c;强制转换为char即可&#xff1a; 结果&#xff1a; 2.注意细节 &#xff08;1&#xff09;如果文件不存在…

Qt和c++面试集合

目录 Qt面试 什么是信号&#xff08;Signal&#xff09;和槽&#xff08;Slot&#xff09;&#xff1f; 什么是Meta-Object系统&#xff1f; 什么是Qt的MVC模式&#xff1f; 1. QT中connect函数的第五个参数是什么&#xff1f;有什么作用&#xff1f; 3. 在QT中&#xff…

【NestJS入门到精通】装饰器

目录 方法装饰器通过prototype添加属性、方法 属性装饰器拓展 方法装饰器参数装饰器 方法装饰器 ClassDecorator 定义了一个类装饰器 a&#xff0c;并将其应用于类 A。装饰器 a 会在类 A 被定义时执行。 const a:ClassDecorator (target:any)>{console.log(target,targe…

概率 多维随机变量与分布

一、二维 1、二维随机变量及其分布 假设E是随机试验&#xff0c;Ω是样本空间&#xff0c;X、Y是Ω的两个变量&#xff1b;(X,Y)就叫做二维随机变量或二维随机向量。X、Y来自同一个样本空间。 联合分布函数 F(x,y)P(X≤x,Y≤y)&#xff0c;即F(x,y)表示求(x,y)左下方的面积。 …

Struct Streaming

spark进行实时数据流计算时有两个工具 Spark Streaming:编写rdd代码处理数据流,可以解决非结构化的流式数据 Structured Streaming:编写df代码处理数据流,可以解决结构化和半结构化的流式数据 实时计算 实时计算&#xff0c;通常也称为“实时流计算”、“流式计算” 流数据处…

Unity3d使用JsonUtility.FromJson读取json文件

使用JsonUtility.FromJson方法不需要额外引用第三方库。该方法只能读取json对象&#xff0c;而不能读取json数组。 假如我们有如下的json数组&#xff1a; [ {"id":1, "name":"first2021", "level":5, "score":100, "…

vue3 对 vue2 有什么优势

1、diff算法的优化--静态标记&#xff08;PatchFlag&#xff09; vue2中的虚拟dom是全量的对比&#xff08;每个节点不论写死的还是动态的都会一层一层比较&#xff0c;这就浪费了大部分事件在对比静态节点上&#xff09; vue3编译模板时&#xff0c;动态节点做标记 标记分为不…

仿函数(函数对象)

0.含义 仿函数和函数对象在C中含义一致。官方解释是&#xff1a; &#xff08;&#xff09;就是函数调用运算符&#xff0c;也就是说一个类重载了小括号&#xff0c;它实例化的对象就可以像函数一样使用。 “仿”函数&#xff0c;意味着它和函数使用有相同点&#xff1a; …

盘点双十一四款不错的品牌好物!2024学生党高颜值平价好物推荐!

在双十一这个购物狂欢节&#xff0c;不少学生党都希望以最实惠的价格买到心仪的商品。今天&#xff0c;我们就来盘点四款双十一期间值得入手的高颜值平价好物&#xff0c;让同学们在享受优惠的同时&#xff0c;也能拥有品质生活&#xff01; 品牌好物一、希亦CG超声波清洗机 双…

数据中心物理安全的历史和演变

在当今的数字时代&#xff0c;数据中心托管已成为我们互联世界的支柱。这些设施在存储、管理和处理我们日常生活所需的大量信息方面发挥着至关重要的作用。从社交媒体平台和电子商务网站到流媒体服务和云计算&#xff0c;数据中心为我们依赖的数字服务提供支持。 随着企业越来…

Swarm 框架登场:OpenAI 第 3 阶段「敲门砖」;马斯克的 Teslabot 实际有人远程操控丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

音视频开发:FFmpeg库的使用

文章目录 一、FFmpeg的介绍二、FFmpeg的安装三、FFmpeg的使用1.ffplay&#xff1a;播放音视频2.ffprobe&#xff1a;查看视频信息3.ffmpeg&#xff1a;处理视频(1)格式转换(2)帮助 四、参考资料 一、FFmpeg的介绍 FFmpeg 是使用广泛的多媒体框架&#xff0c;是一个强大的音视频…

element el-tree 自定义图标

除了自定义以外,下方代码还包含 tree自动展开 点击节点后节点聚焦 节点的click事件 节点查询 <template><el-inputplaceholder"请输入要查询的节点"v-model"filterText"clearable></el-input><el-treehighlight-currentclass&quo…