class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> dataStack;
for (int i=0; i<tokens.size(); ++i)
{
int len = tokens[i].size();
if (len == 1 && !isdigit(tokens[i][0]))// if token
{
int two = dataStack.top(); dataStack.pop();
int one = dataStack.top(); dataStack.pop();
switch(tokens[i][0])
{
case '+': dataStack.push(one+two);break;
case '-': dataStack.push(one-two);break;
case '*': dataStack.push(one*two);break;
case '/': dataStack.push(one/two);break;
}
}
else
{
int num=0, power = 1;
if (tokens[i][0] != '-')
{
for (int j=len-1; j>=0; --j)
{
num += (tokens[i][j] - '0') *power;
power*=10;
}
dataStack.push(num);
}
else
{
for (int j=len-1; j>0; --j)
{
num += (tokens[i][j] - '0') *power;
power*=10;
}
dataStack.push(-num);
}
}
}
int ans = dataStack.top();
dataStack.pop();
return ans;
}
};
栈&逆波兰150. Evaluate Reverse Polish Notation
最新推荐文章于 2020-11-23 14:56:04 发布