150. Evaluate Reverse Polish Notation
2015-08-23 19:34
519 查看
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are
Some examples:
分析:这一题就是写程序计算逆波兰式的结果,遍历表达式,碰到操作数入栈,碰到操作符就从栈顶取出两个操作数,再将计算后的结果入栈,最后栈中剩余的唯一操作数就是计算结果。
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; } };
相关文章推荐
- lua通配符
- 一些极其有用的Lua代码
- lua基金会【五岁以下儿童】I/O文件操作
- LUA--string的使用
- lua 删除key,value table中指定元素
- POJ-3337 Expression Evaluator-表达式求值
- LeetCode Evaluate Reverse Polish Notation
- LeetCode Evaluate Reverse Polish Notation
- leetcode 150: Evaluate Reverse Polish Notation
- Evaluate Reverse Polish Notation
- c和lua之间互相调用方法
- 设计模式实例(Lua)笔记之七(Decorator模式)
- 设计模式实例(Lua)笔记之六(Adapter模式)
- openresty + lua-resty-weedfs + weedfs + graphicsmagick动态生成缩略图(类似淘宝方案)
- luaplus和c++之间的代码交互
- Evaluating Simple C Expressions
- 设计模式实例(Lua)笔记之五(Bridge模式)
- [leetcode-150]Evaluate Reverse Polish Notation(c++)
- Programming in Lua读书笔记
- lua中关于字符串的操作总结