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

C++

class Solution {
public:
int evalRPN(vector<string> &tokens){
int len = tokens.size();
stack<int> S;
for (int i = 0; i< len; i++){
if ("+" == tokens[i] || "-" == tokens[i] || tokens[i] == "*" || tokens[i] == "/"){
int arg2 = S.top(); S.pop();
int arg1 = S.top(); S.pop();
S.push(runOperator(arg1,arg2,tokens[i][0]));
}else
S.push(stoi(tokens[i]));
}
return S.top();
}
int runOperator(int arg1,int arg2,char optor){
if('+' == optor) return arg1 + arg2;
else if('-' == optor) return arg1 - arg2;
else if('*' == optor) return arg1 * arg2;
else return arg1 / arg2;
}
};

最新文章

  1. .Net Core 跨平台系列之环境部署
  2. 《JavaScript高级程序设计》读书笔记--(3)引用类型
  3. 嵌入式: jffs2,yaffs2,logfs,ubifs文件系统性能分析
  4. Arduino101学习笔记(三)&mdash;&mdash; 101简介
  5. JVM性能监控与故障处理命令行工具
  6. Runnable和Thread的区别 (转)
  7. html标签marquee实现走马灯效果(文字浮动)
  8. Discuz X2.5 用户名包含被系统屏蔽的字符[解决方法]
  9. hexo博客部署到github无法上传的问题
  10. python学习教程(九)sqlalchemy框架的modern映射
  11. SAE php 研究(2)
  12. 对C# 中Readonly的再认识
  13. 【Halum操作-UVA 11478】
  14. WPF DataGrid分页功能实现代码
  15. Nginx 修改用户权限
  16. Android测试(三):本地单元测试
  17. svn 的truck、tag、 merge
  18. 【RestTemplete】使用RestTemplete传Json或者 {} 报错--解决
  19. MyBatis 源码分析 - 映射文件解析过程
  20. (4) MySQL中EXPLAIN执行计划分析

热门文章

  1. POJ1804——Brainman(水题)
  2. java线程day-01
  3. symfony2 数据库原生查询
  4. Mysql实现无插入有更新(不知主键的情况下)
  5. 小学生都能读懂的网络协议之:WebSocket
  6. 测试验收标准checklist
  7. 定要过python二级选择题二套
  8. TCP协议基本概念
  9. js高阶
  10. 第一个Java HelloWorld