这个题比较难理解的就是逆波兰表达式是什么东西,上面我贴了定义,这个题本身不难,只需要运用迭代器逐个访问,当为数字是存入栈中,是算符时就要取数出来进行运算,先取出的是右操作数,取出来以后用stoi来转化为整型
int evalRPN(vector<string>& tokens) {
stack<int> tmp;
for(int i = 0;i<tokens.size();i++)
{
if(tokens[i] == "+" || tokens[i] == "-" || tokens[i] == "*" || tokens[i] == "/")
{
int rightnums = tmp.top();
tmp.pop();
int leftnums = tmp.top();
tmp.pop();
switch(tokens[i][0])
{
case '+':
tmp.push(leftnums + rightnums);
break;
case '-':
tmp.push(leftnums - rightnums);
break;
case '*':
tmp.push(leftnums * rightnums);
break;
case '/':
tmp.push(leftnums / rightnums);
break;
}
}
else
{
tmp.push(stoi(tokens[i]));
}
}
return tmp.top();
}