2020-05-15
1.题目描述
逆波兰表达式求值
2.题解
直接使用栈即可,需要注意的是参与运算的数的出栈的顺序。
3.代码
class Solution {
public:
int evalRPN(vector<string>& tokens) {
int l=tokens.size();
if (!l) return 0;
stack<int> mystack;
int a,b;
for (int i=0;i<l;i++){
if (tokens[i]=="+"||tokens[i]=="-"||tokens[i]=="*"||tokens[i]=="/"){
b=mystack.top();
mystack.pop();
a=mystack.top();
mystack.pop();
if (tokens[i]=="+"){
mystack.push(a+b);
}else if (tokens[i]=="-"){
mystack.push(a-b);
}else if (tokens[i]=="*"){
mystack.push(a*b);
}else if (tokens[i]=="/"){
mystack.push(a/b);
}
}
else{ // 如果是数字的话
mystack.push(atoi(tokens[i].c_str()));
}
}
return mystack.top();
}
};