栈的介绍和使用(算法)

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

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;

}

};

相关推荐
文丑颜不良啊39 分钟前
LeetCode2861~2880题目解析
java·leetcode
岑梓铭1 小时前
《考研408数据结构》第八章(排序)复习笔记
数据结构·笔记
青少儿编程课堂1 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会图形化考级:校园大富翁经营闯关解析
c++·python·算法·bfs·信息学竞赛
在所不辞兄1 小时前
为什么在新能源汽车电驱与热管理开发中,AI驱动的数字孪生和数据驱动仿真正在部分替代对物理台架与实车标定的依赖?
人工智能·深度学习·神经网络·算法·机器学习
I_belong_to_jesus12 小时前
C++关于分支预测的优化1
开发语言·c++·算法
Code_Solitude19 小时前
C语言动态内存 + 柔性数组 + 数组名退化
c语言·算法·柔性数组
上海潭龙东海科技有限公司19 小时前
客运站管控之动态孪生技术方案(新增一屏管控模块
数据仓库·人工智能·算法·重构·动态规划
文丑颜不良啊20 小时前
LeetCode2821~2840题目解析
java·leetcode
YLCHUP21 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论