码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 学院打卡第十四天


    今天是一道困难题,难得有困难题!!

    如题:

    但是这个困难题感觉也不是很”困难“!!!

    算法思想:

    第一感觉就是利用栈的思想,这种题做多了,一看见就是想到栈!!!果然真行!!!

    ---初始化2个栈,一个symbol装运算符!,&,|。一个nums装括号以及t,f。

    ---然后遍历字符串

    ---当遇到逗号  ,  直接跳过 

    ---遇到运算符,直接装入symbol

    ---当遇到   (   、 t、    和  f  直接装入nums栈中,t和f要分别转换为True和False装入!

    ----遇到右括号 )   就要分情况讨论了!!!!

                   (1)symbol栈出一个元素,如果是 !,那么nums肯定只要出一个字符和左括号进行not 运算

                    (2)如果是&则定义num初始值为True,如果是|则定义初始值为False,然后对nums进行出栈操作直到栈顶为左括号,每出来一个与num进行对应的运算并且重新赋值给num

                    (3)最后把左括号出栈,把得出的结果num再入栈

    ---结束循环的时候,返回nums中的第一个元素(也只剩一个元素了!)

    代码:(有一些细节在代码注释里提到!)

    1. class Solution:
    2. def parseBoolExpr(self, expression: str) -> bool:
    3. nums, symbols = [], []
    4. for i in expression:
    5. if i == "&" or i == "|" or i == "!":
    6. symbols.append(i)
    7. elif i == ",":
    8. continue
    9. else:
    10. if i == ")":
    11. sym = symbols.pop()#先得出运算符
    12. if sym=="!":
    13. num=not nums.pop()
    14. elif sym=="&":
    15. num=True
    16. while len(nums)!=0 and nums[-1]!="(":
    17. num=nums.pop() and num#nums.pop()要放前面,防止num是false直接跳过nums.pop()进入死循环!
    18. else:
    19. num=False
    20. while len(nums)!=0 and nums[-1]!="(":
    21. num=nums.pop() or num #nums.pop()要放前面,防止num是true直接没有去nums.pop()进入死循环!!!!
    22. nums.pop()#左括号出栈
    23. nums.append(num)#结果入栈
    24. else:
    25. if i=="f":
    26. nums.append(False)
    27. elif i=="t":
    28. nums.append(True)
    29. else:
    30. nums.append(i)
    31. return nums[0]

    运行结果:

    今天的打卡完成啦!!!

  • 相关阅读:
    SpringBoot项目--电脑商城【加入购物车】
    在Ubuntu系统中测试Redis连接池——redis++方案
    前端伪进度条实现(仿antd message使用react组件静态方法)
    Kernel编译报错:对yaml_emitter_initalize“未定义引用
    MFC CDockablePane类,常见配置
    java毕业设计研究生实验室综合管理系统Mybatis+系统+数据库+调试部署
    WIFI产品使用指导说明
    你也可以很硬核「GitHub 热点速览 v.22.13」
    SSM之spring注解式缓存redis
    生物通路数据库收录1600+整合的经典通路
  • 原文地址:https://blog.csdn.net/m0_58803171/article/details/127702633
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号