您的位置:首页 > 编程语言 > Lua

LeetCode:Evaluate Reverse Polish Notation

2013-11-28 22:42 417 查看
题目链接

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

分析:这一题就是写程序计算逆波兰式的结果,遍历表达式,碰到操作数入栈,碰到操作符就从栈顶取出两个操作数,再将计算后的结果入栈,最后栈中剩余的唯一操作数就是计算结果。 本文地址

class Solution {
public:
int evalRPN(vector<string> &tokens) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
int len = tokens.size();
stack<int> S;
for(int i = 0; i < len; i++)
{
if(tokens[i] == "+" || tokens[i] == "-" ||
tokens[i] == "*" || tokens[i] == "/")
{
int op2 = S.top(); S.pop();
int op1 = S.top(); S.pop();
S.push( op(op1, op2, tokens[i][0]) );
}
else
S.push(stoi(tokens[i]));
}
return S.top();
}
int op(int op1, int op2, char optor)
{
if(optor == '+')return op1 + op2;
else if(optor == '-')return op1 - op2;
else if(optor == '*')return op1 * op2;
else return op1 / op2;
}
};


【版权声明】转载请注明出处:/article/4879671.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: