python精选例题笔记(每日一练)——计算后缀表达式的值 Evaluate Postfix String
2019-03-21 15:17
591 查看
版权声明:JankinChan的博客 https://blog.csdn.net/JankinChan/article/details/88716111
1.题目
Write a function to evaluate a postfix string.
计算后缀缀表达式 ‘2532*1++3/+’ 的值。
2.解题思路
从左到右扫描表达式:
(1)当前扫描到的是数字,直接入栈;
(2)当前扫描到的是符号,将栈顶两数字出栈与当前符号计算,将计算后的值入栈;
(3)将表达式全部扫描完毕,栈内剩下的数就是后缀表达式的值。
3.code:
- 小技巧:用如下代码防止表达式中混有空格。
infix = ‘’.join([c for c in infix if c != ’ '])
def eval_postfix(postfix: str): def compute(op1, op2, op): if op == '+': return op1 + op2 if op == '-': return op1 - op2 if op == '*': return op1 * op2 if op == '/': return op1 / op2 # Remove all white space postfix = ''.join([c for c in postfix if c != ' ']) stk = [] for c in postfix: if c.isdigit(): stk.append(int(c)) else: op2 = stk.pop() op1 = stk.pop() stk.append(compute(op1, op2, c)) return stk.pop() # Call the above function eval_postfix('2532*1++3/+')
result:
6.0
相关文章推荐
- python精选例题笔记(每日一练)—— 创建链表的类 create class LinkedList
- Python:入门笔记之list slices计算方法、匿名表达式、CGI、数据类型及应用领域
- 数据结构学习笔记2——栈用栈计算后缀(postfix)表达的完整代码
- 【龙书笔记】用Python实现一个简单数学表达式从中缀到后缀语法的翻译器(采用递归下降分析法)
- 《java数据结构与算法》笔记-CH4-8栈结构实现后缀表达式计算结果
- 【leetcode】Evaluate Reverse Polish Notation 计算后缀表达式的值(JAVA)
- 每日AC - 后缀表达式计算结果-leetcode-evaluate-reverse-polish-notation
- Python0126-11(双向链表+栈的应用 后缀表达式计算)
- Python练习笔记——采用生成器函数实现两数之间的偶数计算
- 1005. 后缀表达式计算
- 【学习笔记】Python正则表达式
- 《python for data analysis》笔记二--Numpy 基础:arrays 和向量化计算 1
- 利用STL计算后缀表达式
- Python学习笔记 - 1.变量.表达式.语句
- python机器学习及实践学习笔记1-如何打开ipynb后缀文件
- 【Python笔记】Python的几个高级语法概念浅析:lambda表达式 && 闭包 && 装饰器
- Python学习笔记04----计算(a^n) % b并输出结果
- [python高性能编程-学习笔记]章节2.3计算完整的Julia集合
- python笔记2 - 函数,表达式,语句
- python学习笔记--常见矩阵计算