当前位置: 首页 > news >正文

栈与队列力扣经典例题20. 有效的括号1047. 删除字符串中的所有相邻重复项150. 逆波兰表达式求值

对于栈与队列,我们首先要搞清楚,栈是先入后出,而队列是先入先出,利用这个特性,我们来判断题目用什么STL容器,便于我们去解决问题

20. 有效的括号

这道题,首先我们要知道哪些情况,是会使结果变为false的,第一种就是括号数是奇数,那肯定不能两两匹配,第二种就是括号数是偶数可以匹配,但是括号类型不对,就像case 3一样

class Solution {
public:bool isValid(string s) {stack<char>str;if(s.size()%2){return false;}for(int i=0;i<s.size();i++){if(s[i]=='(')str.push(')');else  if(s[i]=='[')str.push(']');else  if(s[i]=='{')str.push('}'); else if(str.empty()||str.top()!=s[i])return false;else str.pop();}return str.empty();}
};

 1047. 删除字符串中的所有相邻重复项

遇到这种题我们的思路就是,遍历数组,如果遍历到的数与栈顶元素相同,那么栈顶元素出栈,再遍历下一个,如果不同才可以入栈

class Solution {
public:string removeDuplicates(string s) {int n=s.size();stack<char>st;for(int i=0;i<n;i++){if(!st.empty()&&s[i]==st.top()){st.pop();continue;}st.push(s[i]);} string ss="";int t=size(st);for(int i=0;i<t;i++){ss+=st.top();st.pop();}reverse(ss.begin(),ss.end());//记得翻转字符串return ss;}
};

 

150. 逆波兰表达式求值

这道题的思路就是,当我们碰到的是一个数时,我们就让它入栈,如果碰到一个运算符号,我们就进行对应的运算,再将运算结果入栈

class Solution {
public:int evalRPN(vector<string>& tokens) {// 力扣修改了后台测试数据,需要用longlongstack<long long> st; for (int i = 0; i < tokens.size(); i++) {if (tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/") {long long num1 = st.top();st.pop();long long num2 = st.top();st.pop();if (tokens[i] == "+") st.push(num2 + num1);if (tokens[i] == "-") st.push(num2 - num1);if (tokens[i] == "*") st.push(num2 * num1);if (tokens[i] == "/") st.push(num2 / num1);} else {st.push(stoll(tokens[i]));}}int result = st.top();st.pop(); // 把栈里最后一个元素弹出(其实不弹出也没事)return result;}
};

 

相关文章:

  • 【Go】探索Go语言接口类型:强类型与灵活性的完美结合
  • java实现大文件的分割与合并
  • 你适合学Python吗?学了Python可以做什么工作?
  • webpack5基础--05_处理图片资源
  • 灵魂指针,教给(二)
  • hivesql和sparksql排序问题详解
  • 【Godot4自学手册】第二十节增加游戏的打击感,镜头震颤、冻结帧和死亡特效
  • [C语言]——分支和循环(4)
  • 【E3S独立出版】2024年第二届绿色建筑国际会议(ICoGB 2024)
  • 重学SpringBoot3-WebMvcAutoConfiguration类
  • 使用 Docker 部署 MrDoc 在线文档管理系统
  • BUUCTF---[MRCTF2020]你传你呢1
  • 【CSS】(浮动定位)易忘知识点汇总
  • Ant Design Vue 修改Model弹框 样式不生效
  • Fastwhisper + Pyannote 实现 ASR + 说话者识别
  • [数据结构]链表的实现在PHP中
  • angular2开源库收集
  • AWS实战 - 利用IAM对S3做访问控制
  • C++类的相互关联
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • EOS是什么
  • ES10 特性的完整指南
  • express如何解决request entity too large问题
  • leetcode386. Lexicographical Numbers
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Sequelize 中文文档 v4 - Getting started - 入门
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 从setTimeout-setInterval看JS线程
  • 离散点最小(凸)包围边界查找
  • 数组的操作
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​ArcGIS Pro 如何批量删除字段
  • $GOPATH/go.mod exists but should not goland
  • (4)Elastix图像配准:3D图像
  • (Python) SOAP Web Service (HTTP POST)
  • (python)数据结构---字典
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (转) ns2/nam与nam实现相关的文件
  • (转)socket Aio demo
  • .gitattributes 文件
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .Net接口调试与案例
  • .NET正则基础之——正则委托
  • @Controller和@RestController的区别?
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [BetterExplained]书写是为了更好的思考(转载)
  • [BSGS算法]纯水斐波那契数列
  • [cocos creator]EditBox,editing-return事件,清空输入框
  • [cogs2652]秘术「天文密葬法」
  • [EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件
  • [HOW TO]如何在iPhone应用程序中发送邮件