eg1
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
stack<int> st;
int pushi = 0;
int popi = 0;
for(pushi = 0; pushi < pushV.size(); ++pushi)
{
//先入栈
st.push(pushV[pushi]);
//判断入栈的值是否和出栈的值相等。
while(!st.empty() && st.top() == popV[popi])
{
st.pop();
++popi;
}
}
return popi == popV.size();
}
};
eg2
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> st;
for(int i = 0; i < tokens.size(); ++i)
{
if(tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/")
{
int right = st.top();
st.pop();
int left = st.top();
st.pop();
//将计算的结果入栈
if(tokens[i] == "+")
{
st.push(left + right);
}
else if(tokens[i] == "-")
{
st.push(left - right);
}
else if(tokens[i] == "*")
{
st.push(left * right);
}
else
{
st.push(left / right);
}
}
else
{
st.push(stoi(tokens[i]));
}
}
return st.top();
}
};