LeetCode题解(1106):解析字符串表示的布尔表达式(Python)
发布日期:2021-06-29 19:58:23
浏览次数:4
分类:技术文章
本文共 1716 字,大约阅读时间需要 5 分钟。
题目:(困难)
标签:字符串、栈
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | O ( N ) O(N) O(N) | O ( N ) O(N) O(N) | 76ms (69.74%) |
Ans 2 (Python) | O ( N ) O(N) O(N) | O ( N ) O(N) O(N) | 64ms (90.79%) |
Ans 3 (Python) |
解法一(栈):
class Solution: def parseBoolExpr(self, expression: str) -> bool: stack = [[]] i = 0 while i < len(expression): ch = expression[i] if ch == "!" or ch == "|" or ch == "&": stack.append([ch]) i += 1 elif ch == ")": now = stack.pop() if now[0] == "!": tmp = not now[1] elif now[0] == "&": tmp = all(now[1:]) else: tmp = any(now[1:]) stack[-1].append(tmp) elif ch == "t": stack[-1].append(True) elif ch == "f": stack[-1].append(False) i += 1 # print(stack) return stack[0][0]
解法二(将符号栈单独拆分):
class Solution: def parseBoolExpr(self, expression: str) -> bool: mark_sign = [] stack = [[]] for ch in expression: if ch == "!" or ch == "|" or ch == "&": mark_sign.append(ch) stack.append([]) elif ch == ")": mark = mark_sign.pop() now = stack.pop() if mark == "!": tmp = not now[0] elif mark == "&": tmp = all(now) else: tmp = any(now) stack[-1].append(tmp) elif ch == "t": stack[-1].append(True) elif ch == "f": stack[-1].append(False) return stack[0][0]
转载地址:https://dataartist.blog.csdn.net/article/details/108093411 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月15日 15时09分01秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
null,undefined 的区别
2021-07-03
javascript 代码中的“use strict“
2021-07-03
JSON 的了解
2021-07-03
defer和async
2021-07-03
严格模式的限制
2021-07-03
attribute和property的区别是什么
2021-07-03
面向对象编程思想
2021-07-03
reactNative 打包报错 mergeReleaseResources
2021-07-03
对web标准、可用性、可访问性的理解
2021-07-03
JS判断 array 类型
2021-07-03
map与forEach的区别
2021-07-03
箭头函数与普通函数的区别
2021-07-03
JS 数组和对象的遍历⽅式,以及⼏种⽅式的⽐较
2021-07-03
JS 事件的各个阶段
2021-07-03
快速的让⼀个数组乱序
2021-07-03
细说 javascript 的 parseInt()函数
2021-07-03
渲染几万条数据并不卡住界面
2021-07-03
获取到页⾯中所有的checkbox怎么做?
2021-07-03
添加、移除、移动、复制、创建和查找节点
2021-07-03
Javascript中callee和caller的作用
2021-07-03