LeetCode题解(0736):Lisp语法表达式解析(Python)
发布日期:2021-06-29 19:58:06
浏览次数:3
分类:技术文章
本文共 2243 字,大约阅读时间需要 7 分钟。
题目:(困难)
标签:字符串、栈
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N ) O(N) O(N) | O ( N ) O(N) O(N) | 40ms (97.06%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一:
class Solution: def evaluate(self, expression: str) -> int: value_stack = [[]] # 表达式数据栈 param_stack = [{ }] # 表达式参数栈 for elem in expression.replace("(", "( ").replace(")", " )").split(): if elem == "(": value_stack.append([]) param_stack.append(param_stack[-1].copy()) elif elem == ")": values = value_stack.pop() if values[0] == "add": value = values[1] + values[2] elif values[0] == "mult": value = values[1] * values[2] else: if isinstance(values[1], int): value = values[1] elif values[1].isdigit() or (values[1][0] == "-" and values[1][1:].isdigit()): value = int(values[1]) else: value = param_stack[-1][values[1]] value_stack[-1].append(value) param_stack.pop() if value_stack[-1][0] == "let" and len(value_stack[-1]) % 2 == 1: value = value_stack[-1].pop() param_stack[-1][value_stack[-1].pop()] = value else: if not value_stack[-1]: value_stack[-1].append(elem) elif value_stack[-1][0] == "let": if len(value_stack[-1]) % 2 == 0: if elem.isdigit() or (elem[0] == "-" and elem[1:].isdigit()): param_stack[-1][value_stack[-1].pop()] = int(elem) else: param_stack[-1][value_stack[-1].pop()] = param_stack[-1][elem] else: value_stack[-1].append(elem) else: if elem.isdigit() or (elem[0] == "-" and elem[1:].isdigit()): value_stack[-1].append(int(elem)) else: value_stack[-1].append(param_stack[-1][elem]) # print(elem, "->", value_stack, param_stack) return value_stack[0][0]
转载地址:https://dataartist.blog.csdn.net/article/details/108069727 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年05月03日 15时40分03秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
电商系统新功能:折扣码和折扣分享码带来更多营销新玩法
2019-04-30
快速开通百度智能小程序攻略
2019-04-30
没有设计能力,如何打造个人网站?
2019-04-30
微信公众号和小程序的深度流量玩法
2019-04-30
赋能表单数据,提升智能表单营销能力
2019-04-30
用它提升品牌力,【Design Lab】必用3大酷炫功能
2019-04-30
有了轻栈搭建小程序商城工具,小白也能零门槛开发自己的小程序商城了
2019-04-30
推广成本不菲?百度自然流量的硬核武器来啦
2019-04-30
时代发展趋势:电商+小程序
2019-04-30
没有网店经验的小商家开辟小程序商城之路
2019-04-30
商家巧用小程序推动新零售运营模式发展
2019-04-30
轻栈上线头条搜索配置,一键开启头条矩阵流量
2019-04-30
敲黑板,重点来了!轻栈免费小程序也有支付功能哦
2019-04-30
让人无法抗拒的小程序魅力值
2019-04-30
想要让自己的微信商城运营得更好,打造火爆的线上商城吗?
2019-04-30
又一电商杀手锏——区块链应用--交易印
2019-04-30
好好利用通过企业认证的百家号,又一波流量在来的路上
2019-04-30
微信公众号推文次数不受限的秘技
2019-04-30
轻栈送上免费注册支付宝小程序
2019-04-30
快速搭建小程序,实现线上引流获客
2019-04-30