问题描述:
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +, -, *, /. Each operand may be an integer or another expression.
Some examples:
[“2”, “1”, “+”, “3”, ““] -> ((2 + 1) 3) -> 9
[“4”, “13”, “5”, “/”, “+”] -> (4 + (13 / 5)) -> 6
Show Tags
Show Similar Problems
分析:这道题比较普通,倒是c++的语法折磨了我好长,c++里面不能用switch来比较string,也就是switch(string)是错误的。于是我想到strcmp,但是也是错误的,后来改成==就可以了
代码如下:16ms
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack<int> stack;
int size = tokens.size();
for(int i = 0;i<size;i++){
string str = tokens[i];
int first;
int second;
if(str=="+"){
second = stack.top();stack.pop();
first = stack.top();stack.pop();
stack.push(second+first);
}else if(str=="-"){
second = stack.top();stack.pop();
first = stack.top();stack.pop();
stack.push(first-second);
}else if(str=="*"){
second = stack.top();stack.pop();
first = stack.top();stack.pop();
stack.push(first*second);
}else if(str=="/"){
second = stack.top();stack.pop();
first = stack.top();stack.pop();
stack.push(first/second);
}else{
//为整数,解析并压栈
int val = atoi(str.c_str());
stack.push(val);
}
}
return stack.top();
}
};
本文详细介绍了如何使用C++解决Reverse Polish Notation(后缀表达式)的值评估问题,重点解决了C++语法中switch语句无法直接比较字符串的问题,并提供了实现代码,包括使用strcmp和基本的算术运算逻辑。

431

被折叠的 条评论
为什么被折叠?



