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

leetcode算法之栈

目录

  • 1.删除字符串中的所有相邻重复项
  • 2.比较含退格的字符串
  • 3.基本计算器II
  • 4.字符串解码
  • 5.验证栈序列

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

删除字符串中的所有相邻重复项
在这里插入图片描述

class Solution {
public:string removeDuplicates(string s) {string ret;//使用数组模拟栈操作for(auto ch:s){if(ret.size()&& ch == ret.back()) ret.pop_back();else ret+=ch;}return ret;}
};

2.比较含退格的字符串

比较含退格的字符串
在这里插入图片描述

class Solution {
public:bool backspaceCompare(string s, string t) {return changeStr(s) == changeStr(t);}string changeStr(string& s){string ret;for(auto ch:s){if(ch != '#') ret+=ch;else {if(ret.size()){ret.pop_back();}}}return ret;}
};

3.基本计算器II

基本计算器II
在这里插入图片描述

class Solution {
public:int calculate(string s) {//双栈vector<int> st;//使用数组来模拟栈结构char op = '+';//使用变量来模拟栈结构int i = 0,n = s.size();while(i<n){if(s[i] ==' ') {i++;}else if(s[i]>='0'&&s[i]<='9'){int tmp = 0;while(i<n && (s[i]>='0'&&s[i]<='9')) tmp = tmp*10+(s[i++]-'0');if(op == '+') st.push_back(tmp);else if(op == '-') st.push_back(-tmp);else if(op == '*') st.back()*=tmp;else if(op == '/') st.back() /= tmp;}else{op = s[i];i++;}}int ret = 0;for(auto x:st) ret+=x;return ret;}
};

4.字符串解码

字符串解码
在这里插入图片描述

class Solution {
public:string decodeString(string s) {//双栈stack<string> st;stack<int> nums;st.push("");int i =0,n = s.size();while(i<n){if(s[i]>='0'&&s[i]<='9'){int tmp = 0;while(s[i]>='0'&&s[i]<='9') tmp = tmp*10+(s[i++]-'0');nums.push(tmp);}else if(s[i] == '['){i++;string tmp;while(s[i]>='a'&&s[i]<='z') tmp+=s[i++];st.push(tmp);}else if(s[i] == ']'){string tmp = st.top();st.pop();int k = nums.top();nums.pop();while(k--){st.top()+=tmp;}i++;}else{string tmp;while(i<n && s[i]>='a'&&s[i]<='z') tmp+=s[i++];st.top()+=tmp;}}return st.top();}
};

5.验证栈序列

验证栈序列
在这里插入图片描述

class Solution {
public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {stack<int> st;int i =0,n = popped.size();for(auto ch:pushed){st.push(ch);while(st.size() && st.top() == popped[i]) {st.pop();i++;}}return i==n;}
};
http://www.lryc.cn/news/253340.html

相关文章:

  • 电脑上mp4视频文件无缩略图怎么办
  • 【Centos8】配置网络镜像源
  • 深入学习Synchronized各种使用方法
  • 【idea】设置鼠标滚轮控制缩放大小
  • 合并两个有序数组(leetcode_刷题1)
  • 麒麟linux将图片批量生成PDF的方法
  • Linux——vim编辑文件时——.swp文件解决方案
  • 【Maven】清理 maven 仓库
  • APOLLO自动驾驶技术沙龙:未来已来,共创智能交通新时代
  • Java面试题12
  • ubuntu上创建服务启动python脚本
  • 51单片机制作数字频率计
  • java中强引用、软引用、弱引用、虚引用的区别是什么?
  • springboot -事务管理
  • 商城系统通过Kafka消息队列,实现订单的处理和状态更新
  • IntelRealSense深度相机D455在ROS1运行中的消息内容
  • 公有云迁移研究——AWS Translate
  • 【laBVIEW学习】4.声音播放,自定义图标,滚动条设置,保存参数以及恢复参数
  • 《论文阅读》使用条件变分自动编码器学习神经对话模型的语篇水平多样性 2017 ACL
  • 【win32_003】不同字符集下的通用字符串语法TCHAR、TEXT、PTSTR、PCTSTR
  • 《漫长的等待》—— 读后感
  • 基于ROPNet项目训练modelnet40数据集进行3d点云的配置
  • 力扣215. 数组中的第K个最大元素
  • 轻量封装WebGPU渲染系统示例<40>- 多层材质的Mask混合(源码)
  • 程序员的实用网站导航与推荐
  • 上午面了个腾讯拿 38K 出来的,让我见识到了基础的天花板
  • 【halcon】C# halcon 内存暴增
  • LeetCode130. Surrounded Regions
  • 【实战教程】PHP如何轻松对接腾讯云COS,实现文件上传下载?
  • pytorch学习10-网络模型的保存和加载