算法九
来源:互联网 发布:vim c语言配置 编辑:程序博客网 时间:2024/04/30 11:03
RPN表达式
算法描述
- RPN是对算数表达式的一种描述,描述中不含括号
- RPN经常用于虚拟机上,比如JVM
- RPN的书写特点之一是:操作符写在数字之后
- 例如,“3-4” 可以写成 “3 4 -”
- 同样的,“(3 - 4) * 5”可以写成 “3 4 - 5”
- 注意以下,虽然没有括号,单RPN表达式依然没有歧义
- 再比如,“3 - (4 * 5)” 会被写为“3 4 5 * -”
- RPN表达式通过一个栈来计算,表达式总左至右来处理
- 遇到的每个数字被放入到栈中,遇到操作符时,合适的数字从栈中提取出来,进行计算,计算结果再入栈
- 最后,栈的顶部数字就是表达式的值
- RPN支持的运算符包括加(+)、减(-)、乘(*)、负(~)
- 例如,RPN表达式“2 3 + 6 ~ 7 * -”可以按照如下方式计算
Remaining Expression Stack New Stack 2 3 + 6 ~ 7 * - [] [2] 3 + 6 ~ 7 * - [2] [2 3] <---- Stacks grow to the right + 6 ~ 7 * - [2 3] [5] 6 ~ 7 * - [5] [5 6] ~ 7 * - [5 6] [5 -6] 7 * - [5 -6] [5 -6 7] * - [5 -6 7] [5 -42] - [5 -42] [47] <---- Final answer is 47
- 若是因为RPN表达式构造不合理,你可以返回-999
参数定义
- 类名
RPN
- 方法
evaluate
- 输入参数
string
- 输出
string
- 方法声明
int evaluate(string expr)
限制条件
- expr包含奇数个字符
- expr 的奇数位置是空格
- expr 的偶数位置是[0 - 9] ,或者符号加(+)、减(-)、乘(*)、负(~)
例子
- 输入
- expr: “2 3 + 6 ~ 7 * -“
- 输出
- 47
测试实例
实例一
输入
- ”5 ~ ~ ~”
输出
- -5
实例二
- 输入
- ”9 8 7 * * 4 5 - -“
- 输出
- 505
- 输入
实例三
- 输入
- ”1 + 2 + 3”
- 输出
- -999
- 输入
实例四
- 输入
- ”1 9 ~ 2 8 * +”
- 输出
- -999
- 输入
阅读全文
0 0
- 九九算法源码
- 九九算法
- 算法九
- 九.查找算法
- 九种排序算法
- 排序算法九:基数排序
- 九大排序算法
- 九大排序算法
- 排序算法九:基数排序
- 九种算法
- 九种排序算法
- 九大排序算法
- 九大算法
- 九大排序算法
- 九种排序算法
- 九大排序算法
- 九大排序算法
- 九、垃圾回收算法
- 笔记本开启wifi,受限的原因
- 使用LinkedList实现栈数据结构特点的容器和队列数据结构特点的容器
- 用python写网络爬虫-下载网页
- Highways
- GPU编程自学6 —— 函数与变量类型限定符
- 算法九
- 给年轻人工作与职业发展的建议
- Java Arrays.sort和Collections.sort的简洁写法
- Python While循环语句 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为: while 判断条件:
- SQL查询和优化(四)
- <8/5>集训日记
- CART分类与回归树与GBDT(Gradient Boost Decision Tree)
- ViewDragHelper使用简介
- python爬虫学习第十二天