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

【代码随想录算法训练营——Day10】栈与队列——232.用栈实现队列、225.用队列实现栈、20.有效的括号、1047.删除字符串中的所有相邻重复项

LeetCode题目链接
https://leetcode.cn/problems/implement-queue-using-stacks/
https://leetcode.cn/problems/implement-stack-using-queues/description/
https://leetcode.cn/problems/valid-parentheses/description/
https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string/description/

题解
232.用栈实现队列
难度不大。

225.用队列实现栈
与上题类似。

20.有效的括号
有提示用栈了,不然可能不知道怎么写吧。

1047.删除字符串中的所有相邻重复项
用栈的思想真是太巧妙了,完全不知道怎么写。用栈非常简单。
学到了当栈里存的字符串是相反的时,只要reverse一下就可以了,代码如下:

reverse (result.begin(), result.end());

代码

//232.用栈实现队列
#include <iostream>
#include <stack>
using namespace std;class MyQueue {
public:MyQueue() {// 不需要在构造函数中重新声明栈,应该在类中声明它们}void push(int x) {while (!s1.empty()) {int tmp = s1.top();s2.push(tmp);s1.pop();}s1.push(x);while (!s2.empty()) {int tmp = s2.top();s1.push(tmp);s2.pop();}}int pop() {int result = s1.top();s1.pop();return result;}int peek() {return s1.top();}bool empty() {if (s1.empty() && s2.empty()) return true;else return false;}
private:stack<int> s1, s2;
};int main() {MyQueue obj;obj.push(1);obj.push(2);cout << obj.peek() << endl;cout << obj.pop() << endl;cout << obj.empty() << endl;return 0;
}
//225.用队列实现栈
#include <iostream>
#include <queue>
using namespace std;class MyStack {
public:MyStack() {}void push(int x) {while (!q1.empty()) {q2.push(q1.front());q1.pop();}q1.push(x);while (!q2.empty()) {q1.push(q2.front());q2.pop();}}int pop() {int result = q1.front();q1.pop();return result;}int top() {return q1.front();}bool empty() {if (q1.empty() && q2.empty()) return true;else return false;}
private:queue<int> q1, q2;
};int main() {MyStack obj;obj.push(1);obj.push(2);cout << obj.top() << endl;cout << obj.pop() << endl;cout << obj.empty() << endl;return 0;
}
//20.有效的括号
#include <iostream>
#include <stack>
using namespace std;class Solution {
public:bool isValid(string s) {stack<char> st;for (char c : s) {if (c == '(' || c == '[' || c == '{') st.push(c);else {if (st.empty()) return false;if ((c == ')' && st.top() == '(') || (c == ']' && st.top() == '[') || (c == '}' && st.top() == '{'))st.pop();else return false;}}if (!st.empty()) return false;return true;}
};int main() {Solution s;string str = "]";printf("%d", s.isValid(str));return 0;
}
//1047.删除字符串中的所有相邻重复项
#include <iostream>
#include <stack>
#include <string>
using namespace std;class Solution {
public:string removeDuplicates(string s) {stack<char> st;string result, tmp;for (char c : s) {if (st.empty() || st.top() != c) st.push(c);else if (st.top() == c) st.pop();}while (!st.empty()) {tmp += st.top();st.pop();};for (int i = tmp.size() - 1;i >= 0;i--) {result += tmp[i];}return result;}
};int main() {string str = "abbaca";Solution s;cout << s.removeDuplicates(str) << endl;return 0;
}

文章转载自:

http://zWadCSBL.rdsst.cn
http://twXEmMFS.rdsst.cn
http://hZJLFXeX.rdsst.cn
http://7rYQlTWm.rdsst.cn
http://KpqHKALV.rdsst.cn
http://ZPO2NUoN.rdsst.cn
http://wB2evr37.rdsst.cn
http://9IYrltx0.rdsst.cn
http://i1bIJnps.rdsst.cn
http://Eq7oRskC.rdsst.cn
http://eXDZqTEW.rdsst.cn
http://gJiYR3T0.rdsst.cn
http://XFq88hOv.rdsst.cn
http://gfwdrd9l.rdsst.cn
http://kP7S6hA9.rdsst.cn
http://tSmokmY4.rdsst.cn
http://YEAHRXp8.rdsst.cn
http://tFhHUhg8.rdsst.cn
http://cHRnrWuW.rdsst.cn
http://LiBTYOV1.rdsst.cn
http://NjbjBPnX.rdsst.cn
http://zaoENQjN.rdsst.cn
http://S4kfEou6.rdsst.cn
http://H4YtKRC6.rdsst.cn
http://9qYcIZRL.rdsst.cn
http://5PhMHbnB.rdsst.cn
http://XJNDQBrs.rdsst.cn
http://toq4aErh.rdsst.cn
http://7MLIIa14.rdsst.cn
http://82HNc0fS.rdsst.cn
http://www.dtcms.com/a/380377.html

相关文章:

  • 【Luogu】P2613 【模板】有理数取余
  • 第一部分:服务器硬件配置
  • 【前端】JavaScript--浅拷贝与深拷贝
  • pureadmin的动态路由和静态路由
  • 24年秋招-京东-后端开发岗-第1批笔试总结
  • 技术与情感交织的一生 (十三)
  • 1 环境配置
  • 老年人生活照护实训室:支撑照护实操教学的关键场所
  • 俄罗斯方块终端游戏实现 —— C语言系统编程与终端控制
  • 跨屏互联KuapingCMS建站系统发布更新 增加seo自动外链功能
  • 域账号提权后权限管理问题解析
  • Go语言设计模式(七)组合模式
  • 解密完全二叉树顺序存储之堆结构
  • 【Vue2 ✨】Vue2 入门之旅 · 进阶篇(三):模板编译原理
  • 嵌入式仿真技术在教学中的应用与挑战探析
  • Kaggle项目实践——Titanic: Machine Learning from Disaster
  • 【leetcode】127. 三角形的最小路径和
  • Java设计模式中的几种常用设计模式
  • 【Vue2 ✨】Vue2 入门之旅 · 进阶篇(四):异步更新与 nextTick 原理
  • 【小程序】微信小程序九宫格抽奖动画(完整版)
  • [BJDCTF 2020]encode
  • 系统核心解析:深入操作系统内部机制——进程管理与控制指南(一)【进程/PCB】
  • 速通ACM省铜第二天 赋源码(Adjacent XOR和Arboris Contractio)
  • Python快速入门专业版(二十四):while循环:条件循环与“死循环”避免(猜数字游戏案例)
  • 神经网络构成框架-理论学习
  • 智能眼镜产品成熟度分析框架与评估
  • 从零学算法2327
  • 【C++】:list容器全面解析
  • 渲染农场多少钱一小时
  • IDEA试用过期,无法登录,重置方法