题目描述:

方法一:中缀转后缀

#!_*_coding:utf-8_*_
class Solution:
def calculate(self, s: str) -> int:
def in_to_suffix(s):
priority = {'+': 1, '-': 1, '*': 2, '/': 2}
s.replace(" ", "")
result = []
stack = []
for j,i in enumerate(s):
if i in priority.keys():
while stack and stack[-1] in priority.keys() and priority[i] <= priority[stack[-1]]:
result.append(stack.pop())
stack.append(i)
else:
if j!=0 and s[j-1].isdigit():
i = int(result.pop())*10+int(i)
result.append(i)
while stack:
result.append(stack.pop())
print(result)
return result def evalRPN(tokens):
f1 = lambda a, b: a + b
f2 = lambda a, b: a - b
f3 = lambda a, b: a * b
f4 = lambda a, b: a // b
maps = {'+': f1, '-': f2, '*': f3, '/': f4}
stack = []
for token in tokens:
if token in maps:
a = stack.pop()
b = stack.pop()
stack.append(maps[token](b, a))
else:
stack.append(int(token))
return stack[-1] s = s.replace(" ","")
res = in_to_suffix(s)
return evalRPN(res)

方法二:栈

class Solution:
def calculate(self, s: str) -> int:
stack = []
i = 0
while i < len(s):
if s[i].isdigit():
tmp = 0
while i < len(s) and s[i].isdigit():
tmp = tmp * 10 + int(s[i])
i += 1
stack.append(tmp)
# 如果栈中有乘除,先算出来
while len(stack) > 1 and stack[-2] in {"*", "/"}:
stack.pop()
opt = stack.pop()
if opt == "*":
stack.append(stack.pop() * tmp)
else:
stack.append(stack.pop() // tmp)
elif s[i] in { "*", "/", "+", "-"}:
stack.append(s[i])
i += 1
else:
i += 1
res = 0
sign = 1
for t in stack:
if t == "+":
sign = 1
elif t == "-":
sign = -1
else:
res += sign * t
return res

leetcode-227-基本计算器②的更多相关文章

  1. LeetCode 227. 基本计算器 II(Basic Calculator II)

    227. 基本计算器 II 227. Basic Calculator II 题目描述 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数,+,-,*,/ 四种运算符和 ...

  2. Java实现 LeetCode 227 基本计算器 II(二)

    227. 基本计算器 II 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 . 整数除法仅保留整数部分. 示例 1: 输入: ...

  3. Leetcode 227.基本计算器II

    基本计算器II 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格  . 整数除法仅保留整数部分. 示例 1: 输入: " ...

  4. [LeetCode] 227. 基本计算器 II

    题目链接: https://leetcode-cn.com/problems/basic-calculator-ii 难度:中等 通过率:33.2% 题目描述: 实现一个基本的计算器来计算一个简单的字 ...

  5. Leetcode 224/227/772 计算器

    题目描述 Leetcode 224 Leetcode 224: 这里想让我们实现一个基础的计算器,来计算给定的字符串. 给定的字符串中包含 ( ) + - 和非负整数和空格. # Example 1: ...

  6. [LeetCode] 227. Basic Calculator II 基本计算器 II

    Implement a basic calculator to evaluate a simple expression string. The expression string contains ...

  7. [LeetCode] 227. Basic Calculator II 基本计算器之二

    Implement a basic calculator to evaluate a simple expression string. The expression string contains ...

  8. LeetCode#227.Basic Calculator II

    题目 Implement a basic calculator to evaluate a simple expression string. The expression string contai ...

  9. Leetcode 224.基本计算器

    基本计算器 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格  . 示例 1: 输入: "1 + 1 ...

  10. 【LeetCode】基本计算器II

    [问题]实现一个基本的计算器来计算一个简单的字符串表达式的值.字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格  .整数除法仅保留整数部分. 输入: "3+2*2" ...

随机推荐

  1. leetcode.数组.27移除元素-Java

    1. 具体题目 给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空 ...

  2. kibana 7.* 设置中文 汉化

    原文:kibana 7.* 设置中文 汉化 个人博客:forever121.cn kibana 一直是 日志分析 中得力的助手 由于 kibana5.* 6.* 官方并没有支持中文,需要另外下载补丁包 ...

  3. 访问nginx时验证密码

    只允许1.2.3.4这个IP访问我们的站点,拒绝所有其他IP的访问. server { listen 80; server_name www.example.com; satisfy any; all ...

  4. Laravel Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found

    Laravel: 5.5.* 在迁移中有重命名操作的时候,运行 php artisan migrate 会提示 Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' ...

  5. Vue开发实战

    递归组件 关键是组件在模板内能调用自身,关键是name属性 首先我们先定义数据格式 list: [ { title: '标题1' }, { title: '标题2', children: [ { ti ...

  6. 6361. 【NOIP2019模拟2019.9.18】鲳数

    题目 题目大意 给你一个区间\([l,r]\),求这个区间内每个整数的十进制上从高位到低位的逆序对个数之和. 思考历程 一开始就知道这是个数位DP-- 结果一直都没有调出来,心态崩了-- 正解 先讲讲 ...

  7. delphi Treeview用法

    Treeview用于显示按照树形结构进行组织的数据.         Treeview控件中一个树形图由节点(TreeNode)和连接线组成.TtreeNode是TTreeview的基本组成单元.   ...

  8. springboot连接mysql数据库,JdbcTemplate和spring JPA方式

    SQL部分 CREATE TABLE test( id ) primary key, name ) not null, age ), address ) ); ,,'bj'); ,,'sh'); ,, ...

  9. MaxCompute表设计最佳实践

    MaxCompute表设计最佳实践 产生大量小文件的操作 MaxCompute表的小文件会影响存储和计算性能,因此我们先介绍下什么样的操作会产生大量小文件,从 而在做表设计的时候考虑避开此类操作. 使 ...

  10. NX二次开发-对话框加锁UF_UI_lock_ug_access

    VC/MFC调用UG Dialog要进入加锁状态 加锁 UF_UI_lock_ug_access ( UF_UI_FROM_CUSTOM ); 此处为UF_UI_select的函数 解锁 UF_UI_ ...