后缀表达式求解,使用栈,时间复杂度O(n),空间复杂度O(logn) (why?)
代码如下:
class Solution {
public:
int evalRPN(vector<string> &tokens) {
stack<string> s;
for(int i=0; i<tokens.size(); i++)
{
if(!is_op(tokens[i]))
{
s.push(tokens[i]);
}
else
{
int right = stoi(s.top());
s.pop();
int left = stoi(s.top());
s.pop();
int result;
if(tokens[i] == "+") result = left+right;
else if(tokens[i] == "-") result = left-right;
else if(tokens[i] == "*") result = left*right;
else if(tokens[i] == "/") result = left/right;
s.push(to_string(result));
}
}
return stoi(s.top());
}
bool is_op(string &token)
{
if(token.size() != 1)
return false;
else
return (token == "+" || token == "-" || token == "*" || token == "/");
}
};