150. Evaluate Reverse Polish Notation
2016-05-10 17:25
543 查看
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:
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) { stack<int> stk; if(tokens.size()==0) return 0; if(tokens.size()==1) return atoi(tokens[0].c_str()); for(int i =0; i < tokens.size(); i++) { int tmp1,tmp2; if(tokens[i]!="+"&& tokens[i]!="-" && tokens[i]!="*" && tokens[i]!="/") { stk.push(atoi(tokens[i].c_str())); } else if(tokens[i]=="+") { tmp1 = stk.top(); stk.pop(); tmp2 = stk.top(); stk.pop(); stk.push(tmp1 + tmp2); } else if(tokens[i]=="-"){ tmp1 = stk.top(); stk.pop(); tmp2 = stk.top(); stk.pop(); stk.push(tmp2 - tmp1); } else if(tokens[i]=="*") { tmp1 = stk.top(); stk.pop(); tmp2 = stk.top(); stk.pop(); stk.push(tmp2 * tmp1); } else if(tokens[i]=="/") { tmp1 = stk.top(); stk.pop(); tmp2 = stk.top(); stk.pop(); stk.push(tmp2 / tmp1); } } return stk.top(); } };
相关文章推荐
- 2dx-lua精灵置灰
- [LeetCode]题解(python):150-Evaluate Reverse Polish Notation
- Lua和C++交互详细总结
- lua之alter提示框
- 实现c++,java,lua 在c++编写后需要在 pkg 文件中添加新的函数 然后批处理下生成GamePlatformToLua
- 在实现安卓和ios的sdk中 c++,java,lua 混编学习记录
- LuaDoc 3.0.1 Lua源代码文档生成工具(转)
- lua 随机数
- 基于ngx_lua_waf模块配置web应用防火墙
- 快速掌握Lua 5.3 —— 调试库 (2)
- 快速掌握Lua 5.3 —— 调试库 (1)
- 快速掌握Lua 5.3 —— userdata (2)
- 快速掌握Lua 5.3 —— userdata (1)
- lua类的继承
- lua基本实验
- lua 中的上n级模块路径函数分享
- Lua脚本语言简明入门教程
- Introduction to Classification Evaluation Methods -- Part 1
- 使用IDA静态分析解密《舰娘Collection》的lua脚本
- Learn Lua in 15 Minutes