栈的介绍和使用(算法)

栈最大的特点是先进先出。利用这个特点应用于我们的日常生活会有很大的便利。下面我们一起来看看吧。

class Solution {

public:

int calculate(string s) {

//用数组来模拟栈

vector<int> st;

int i=0,n=s.size();

char op='+';

while(i<n){

if(si==' ') i++;

else if(si>='0'&&si<='9'){

int tmp=0;

while(i<n&&si>='0'&&si<='9')

tmp=tmp*10+(si++-'0');

if(op=='+') st.push_back(tmp);

else if(op=='-') st.push_back(-tmp);

else if(op=='*') st.back()*=tmp;

else st.back()/=tmp;

}else{

op=si;

i++;

}

}

int sum=0;

for(auto e: st){

sum+=e;

}

return sum;

}

};

class Solution {

public:

string decodeString(string s) {

stack<int> nums;

stack<string> st;

st.push("");

int i=0,n=s.size();

while(i<n){

if(si>='0'&&si<='9'){

int tmp=0;

while(si>='0'&&si<='9'){

tmp=tmp*10+(si++-'0');

}

nums.push(tmp);

}else if(si=='['){

i++;

string tmp="";

while(si>='a'&&si<='z'){

tmp+=si++;

}

st.push(tmp);

}else if(si==']'){

string tmp=st.top();

st.pop();

int k=nums.top();

nums.pop();

while(k--){

st.top()+=tmp;

}

i++;

}else{

string tmp;

while(i<n&&si>='a'&&si<='z'){

tmp+=si++;

}

st.top()+=tmp;

}

}

return st.top();

}

};

class Solution {

public:

bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {

int n=popped.size();

stack<int> result;

int i=0;

for(auto e: pushed){

result.push(e);

while(result.size()&&result.top()==poppedi){

result.pop();

i++;

}

}

return i==n;

}

};

相关推荐
BK贝壳8 小时前
bool-hybrid-array 落盘我只认 .bha:用 Create_BHA / Ask_BHA 做布尔数组序列化
数据结构·python·numpy·1024程序员节
企业数字化笔记11 小时前
视频人体姿态怎么做三维可视化?2D关键点、深度局限与技术选型
人工智能·算法·音视频
?abc!11 小时前
(数组)581. 最短无序连续子数组
数据结构·算法·leetcode
小郎君65814 小时前
MPTT树复选框的半选状态:一棵百万节点树从递归到计数器,再到区间覆盖
算法
酌沧14 小时前
MemT让记忆成为模型内生能力
jvm·人工智能·算法
hold?fish:palm14 小时前
40 二叉树的直径
c++·leetcode
Shimeri15 小时前
越卷越像:我用遗传算法做了个"内卷"实验
算法·three.js·数据可视化·遗传算法·进化算法
Evand J15 小时前
【PMSM例程1】永磁同步电机(PMSM)转速与转子电角度观测算法|基于扩展卡尔曼滤波(EKF)的传感器状态估计与误差。附下载链接
算法·电机·1024程序员节·卡尔曼滤波
guo_wen_qiang15 小时前
二叉树的层序遍历-使用双端队列Deque
算法·leetcode·1024程序员节
爱读书的小胖15 小时前
LeetCode 55 跳跃游戏 C 语言解题分析
c语言·数据结构·算法·leetcode·1024程序员节