根据逆波兰表示法,求表达式的值。
有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。
说明:
整数除法只保留整数部分。
给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> s;
for(int i = 0; i < tokens.size(); i++)
{
string& str = tokens[i];
if(!(str == "+" || str == "-" || str == "*" || str == "/"))
{
//str是数字
s.push(atoi(str.c_str()));
}
else
{
//str是操作符
int right = s.top();
s.pop();
int left = s.top();
s.pop();
switch(str[0])
{
case '+':
s.push(left + right);
break;
case '-':
s.push(left - right);
break;
case '*':
s.push(left * right);
break;
case '/':
//这里已知不存在除数为0的情况
s.push(left / right);
break;
}
}
}
return s.top();
}
};