用栈求后缀表达式的值
class Solution {
public:
int evalRPN(vector<string>& tokens) {
int n=tokens.size();
//用一个栈来求后缀表达式
stack<int>stack1;
int t1,t2;
//遍历整个后缀表达式
//如果是+-*/则将栈顶的两个元素弹出,求出对应的值后将该值压入栈中,注意顺序,+和*顺序换一下没有区别,-/交换位置后就有区别
for(int i=0;i<n;i++){
if(tokens[i]=="+"){
t1=stack1.top();
stack1.pop();
t2=stack1.top();
stack1.pop();
stack1.push(t1+t2);
}else if(tokens[i]=="-"){
t1=stack1.top();
stack1.pop();
t2=stack1.top();
stack1.pop();
stack1.push(t2-t1);
}else if(tokens[i]=="*"){
t1=stack1.top();
stack1.pop();
t2=stack1.top();
stack1.pop();
stack1.push(t1*t2);
}else if(tokens[i]=="/"){
t1=stack1.top();
stack1.pop();
t2=stack1.top();
stack1.pop();
stack1.push(t2/t1);
}else{
//stoi函数可以将对应的字符串转化为数字
stack1.push(stoi(tokens[i]));
}
}
return stack1.top();
}
};