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



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;
}
};