首页 > 其他分享 >代码随想录day11 ● 232.用栈实现队列 ● 225. 用队列实现栈 ● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项

代码随想录day11 ● 232.用栈实现队列 ● 225. 用队列实现栈 ● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项

时间:2022-10-03 16:23:17浏览次数:75  
标签:20 队列 随想录 pop st int que push return

232. 用栈实现队列

 1 class MyQueue {
 2 public:
 3 
 4     //初始化入队栈和出队栈
 5     stack<int> stIn;
 6     stack<int> stOut;
 7 
 8     MyQueue() {
 9 
10     }
11     
12     //入队
13     void push(int x) {
14         stIn.push(x);
15     }
16     
17     //出队
18     int pop() {
19         //当出队栈为空是,从入队栈往里面导数据
20         if (stOut.empty()){
21             //从入队栈往出队栈里面导数据
22             while (!stIn.empty()){
23                 stOut.push(stIn.top());
24                 stIn.pop();
25             }
26         }
27         //取出队栈的栈顶
28         int result = stOut.top();
29         stOut.pop();
30         return result;
31     }
32     //获取队首元素
33     int peek() {
34         //直接调用函数
35         int res = this->pop();
36         //pop将res弹出了,重新push一下
37         stOut.push(res);
38         return res;
39     }
40     //判断栈是否为空
41     bool empty() {
42         return stIn.empty() && stOut.empty();
43     }
44 };

225. 用队列实现栈

 1 class MyStack {
 2 public:
 3     //定义一个队列
 4     queue<int> que;
 5     MyStack() {
 6 
 7     }   
 8     //压栈
 9     void push(int x) {
10         que.push(x); 
11     }
12     //出栈
13     int pop() {
14         int size = que.size();
15         size--;
16         while(size--){
17             que.push(que.front());
18             que.pop();
19         }
20         int result = que.front();
21         que.pop();
22         return result;
23     }    
24     //取栈顶的元素
25     int top() {
26         return que.back();
27         /*int res = this->pop();
28         que.push(res);
29         return res;*/
30     }
31     //判断栈是否为空
32     bool empty() {
33         if (que.empty()){
34             return true;
35         }
36         return false;
37     }
38 };

20. 有效的括号

 1 class Solution {
 2 public:
 3     bool isValid(string s) {
 4         //为奇数则return false
 5         if (s.size() % 2){
 6             return false;
 7         }
 8         stack<char> st;
 9         for (int i = 0; i < s.size(); i++){
10             //处理左括号的场景
11             if (s[i] == '(') st.push(')');
12             else if (s[i] == '{') st.push('}');
13             else if (s[i] == '(') st.push(')');
14             //三种不匹配的情况
15             else if (st.empty() && st.top() != s[i]) return false;
16             else st.pop();
17         }
18         //左括号多
19         return st.empty();
20     }
21 };

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

 1 class Solution {
 2 public:
 3     string removeDuplicates(string S) {
 4         string st;
 5         for (char s : S){
 6             if (st.empty() || s != st.back()){
 7                st.push_back(s);
 8             } else {
 9                 st.pop_back();
10             }
11         }
12         return st;
13     }
14 };

标签:20,队列,随想录,pop,st,int,que,push,return
From: https://www.cnblogs.com/zsqy/p/16750259.html

相关文章

  • Jenkins 20220927笔记本4
                          ......
  • Jenkins 20220929笔记本5
                                  ......
  • spring-retry 20220929
     1、pom.xml<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-st......
  • SpringCloud重试retry 20220927
    SpringCloud重试retry是一个很赞的功能,能够有效的处理单点故障的问题。主要功能是当请求一个服务的某个实例时,譬如你的User服务启动了2个,它们都在eureka里注册了,那么正常情......
  • Jenkins 20220925笔记本3
                                                 ......
  • Photoshop 2022 for Mac(最强修图软件ps 2022)v23.5.1永久使用 mac/win
    Photoshop2022中文Mac破解版更新啦~Photoshop简称ps,它是一款专业图像处理软件,此次更新软件可选择项目云服务生成更准确和高质量的图像;软件界面也有了新的中性UI颜色模式,视......
  • 20201206韩进学习笔记5
    EXT2文件系统EXT2文件系统数据结构通过mkfs创建虚拟磁盘在Linux下,命令mke2fs[-bblksize-Ninodes]deviceblocks在设备上创建一个带有nblocks个块和inode......
  • CVE-2021- 22205漏洞复现
    一、漏洞概述2021年4⽉15⽇,GitLab官方发布安全补丁更新修复了GitLab命令执行漏洞(CVE-2021-22205)。由于GitLab中的ExifTool没有对传⼊的图像文件的扩展名进行正确处理,攻击......
  • VS2022编译错误:链接器工具错误 LNK2005
    产生原因  自己在学习namespace时,参照C++plus“9.3.2新的命名空间特性”一书写了基本相同的代码,分别定义了h文件和两个CPP文件,其中一个CPP用来定义变量,一个CPP用来跑m......
  • 10/3 模拟赛 | 牛客 2020 tg1
    DSroundA\(ax+by+cz=d\)的形式,发现裴蜀定理即可。注意下\(\gcd(-a,b)=\gcd(a,b),\gcd(a,0)=a\),即变绝对值和去掉\(0\)即可。#include<bits/stdc++.h>#defineint......