Question

150. Evaluate Reverse Polish Notation

Solution

2 1 + 3 * ((2+1)*3)的后缀(postfix)或逆波兰(reverse Polish)记法,计算这个表达式容易想到栈,当见到一个数时就入栈,见到操作符时该运算符作用于从该栈中弹出的两个数上,将所得结果入栈。

public int evalRPN(String[] tokens) {
Stack<Integer> stack = new Stack<>();
for (String tmp : tokens) {
if (tmp.length() > 1) {
stack.push(Integer.parseInt(tmp));
continue;
}
char c = tmp.charAt(0); // String转char
int a, b;
switch (c) {
case '+':
b = stack.pop();
a = stack.pop();
stack.push(a + b);
break;
case '-':
b = stack.pop();
a = stack.pop();
stack.push(a - b);
break;
case '*':
b = stack.pop();
a = stack.pop();
stack.push(a * b);
break;
case '/':
b = stack.pop();
a = stack.pop();
stack.push(a / b);
break;
default:
stack.push(c - '0'); // char 转 int
}
}
return stack.pop();
}

Reference

最新文章

  1. SQL Server 2012 数据库笔记
  2. Java事务处理全解析(八)——分布式事务入门例子(Spring+JTA+Atomikos+Hibernate+JMS)
  3. 转:Metronic – 超赞!基于 Bootstrap 的响应式后台管理模板
  4. 对象属性操作-包含kvc---ios
  5. 打造自己的Markdown编辑器
  6. 对Kernel panic-not syncing:No init found...init=option to kernel错误总结!
  7. c# SQL CLR 之一
  8. UVA 624 - CD (01背包 + 打印物品)
  9. delphi获取mdb密码
  10. CentOS 6.7 配置nginx支持SSL/https访问
  11. 从0到上线开发企业级电商项目_前端_01_sublime使用技巧
  12. BIGIP-LTM中的NAT和SNAT
  13. 图书管理系统 (c语言实现) (全部代码)
  14. Qt Designer 的使用
  15. HTML5特效收录-不定时更新
  16. LODOP打印控件之LODOP.NewPageA()方法
  17. APACHE如何一个站点绑定多个域名?
  18. 给DB2某表增加一个自增长列
  19. linux入门总结
  20. 判断数独是否合法(LintCode)

热门文章

  1. Java 新内存(cache)模型解析
  2. 记离线缓存(manifest)一大坑,断定其只适用于静态网站或离线应用
  3. Centos搭建 Docker 环境
  4. Mysql_事务_存储过程_触发器
  5. Docker的简介
  6. Spring Boot-@PropertySource注解
  7. 算法基础⑦搜索与图论--BFS(宽度优先搜索)
  8. 计算机系统5-&gt; 计组与体系结构2 | MIPS指令集(上)| 指令系统
  9. 多线程JUC并发篇常见面试详解
  10. python基础练习题(有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?)