首页 > 编程语言 >代码训练营第十一天(Python)| 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

代码训练营第十一天(Python)| 20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值

时间:2023-10-22 21:22:50浏览次数:42  
标签:第十一天 150 elif int res pop 求值 stack append

20. 有效的括号
思路:分析出三种情况,画图模拟。写代码容易写错。

class Solution:
    def isValid(self, s: str) -> bool:
        a_stack = list()
        for i in s:
            if i == '(':
                a_stack.append(')')
            elif i == '{':
                a_stack.append('}')
            elif i == '[':
                a_stack.append(']')
            elif not a_stack or a_stack.pop() != i:
                return False
        return len(a_stack) == 0

1047. 删除字符串中的所有相邻重复项

class Solution:
    def removeDuplicates(self, s: str) -> str:
        a_stack = list()
        for ch in s:
            if a_stack and a_stack[-1] == ch:
                a_stack.pop()
            else:
                a_stack.append(ch)
        return "".join(a_stack)

150. 逆波兰表达式求值
逆波兰表达式就是二叉树的后续遍历

class Solution:
    def evalRPN(self, tokens: List[str]) -> int:
        a_stack = list()
        for i in tokens:
            if i == "+" or i == "-" or i == "*" or i == "/":
                nums1 = int(a_stack.pop())
                nums2 = int(a_stack.pop())
                if i == "+":
                    res = nums2 + nums1
                elif i == "-":
                    res = nums2 - nums1
                elif i == "*":
                    res = nums2 * nums1
                else:
                    res = int(nums2 / nums1)
                a_stack.append(res)
            else:
                a_stack.append(i)
        return int(a_stack.pop())

标签:第十一天,150,elif,int,res,pop,求值,stack,append
From: https://www.cnblogs.com/yixff/p/17779088.html

相关文章

  • Educational Codeforces Round 150 (Rated for Div. 2) B. Keep it Beautiful
    数组\(a=[a_1,a_2,\cdots,a_n]\)被称为是美丽的,如果可以将\([1,x]\)段移到\([x+1,n]\)段后面,\(x\geq0\),数组可以构成非降序。现在有一个数组\(a\)(一开始为空)和\(q\)个询问,第\(i\)个询问给一个正整数\(x_i\)。需要逐步执行以下操作。若\(x_i\)拼接......
  • 北林OJ基于栈的后缀表达式求值
    思路1:(较易理解)#include<iostream>#include<iomanip>usingnamespacestd;#defineOK1#defineERROR0#defineMaxSize100typedefdoubleElemType;//定义栈_顺序栈structStack{ ElemType*top; ElemType*base; intstacksize;};intIsFull(Stacks);i......
  • 10_逆波兰表达式求值
    逆波兰表达式求值给你一个字符串数组tokens,表示一个根据逆波兰表示法表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。对应于leetcode150注意:有效的算符为'+'、'-'、'*'和'/'。每个操作数(运算对象)都可以是一个整数或者另一个表达式。两个整数......
  • C#与S7-1500通信和控制(1)
    西门子安装:解决重启问题:删除HEEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\SESSIONMANAGE\下的PendingFileRemameOpeaations键首先安装博途TIAPortalV15,01-STEP7+WinccProfesionalV15(PLC编程软件+WINCC触摸屏和上位机组态软件),安装完重启安装Simulation,在02-P......
  • [CF1508D] Swap Pass
    D-SwapPass先将所有\(a_i==i\)的点都直接去掉考虑将\(i\)向\(a_i\)连边,那么就会形成一个个的环考虑只有一个环的情况,那么我们任意固定一个点\(x\),一直交换\(a_x\)与\(a_{a_x}\)直到\(a_x==x\),因为所有所有边都交于一点,所以这肯定是合法的但更普遍的情况是不止有一个环,那么......
  • chrome浏览器显示网页字体不正常,需要放大150% 显示正常
    软件环境:windows764位、chrome109.0.5414.120。故障现象:chrome浏览器,浏览百度、淘宝等网站总是需要把显示分辩率放大150%,然后显示正常。解决方案:下载windows7 kb2670838补丁安装后,重启电脑,打开chrome浏览器浏览网页显示正常。 ......
  • 记一种无需形式幂级数求逆的多点求值算法
    仅作为个人理解之用来自https://judge.yosupo.jp/submission/140699首先producttree部分不变我们考虑如何不使用形式幂级数求逆注意到如果对dft的点值求逆实际上是在对x^lim-1取模的意义下实际上在这个意义下也是可做的首先判掉所求点值在dft所用的单位根上的平凡情况(......
  • 算术表达式求值法(表达式求值)之后序表示法求值
    概念后序表示法(PostfixNotation)又称为逆波兰表示法(ReversePolishNotation,RPN),是一种用于表示数学表达式的方法,其中运算符位于它们的操作数之后。这种表示法非常适合用栈来计算表达式的值,因为它消除了括号的需求,使计算机能够轻松地理解和求解表达式。例如,表达式"3+4"在后......
  • 3302. 表达式求值
    3302.表达式求值题目:3302.表达式求值-AcWing题库“表达式求值”问题,两个核心关键点:(1)双栈,一个操作数栈,一个运算符栈;(2)运算符优先级,栈顶运算符,和,即将入栈的运算符的优先级比较:如果栈顶的运算符优先级低,新运算符直接入栈以1+2+3x4x5举例,看是如何利用上述两个关键点实施计算......
  • 算术表达式求值法(表达式求值)之前序表示法求值
    概念前序表示法,也称为前缀表示法或波兰表示法(Polishnotation),是一种用于表示数学表达式和算术运算的方法。这种表示法的特点是将运算符置于操作数之前,而不是像传统的中缀表示法(例如,2+3)将运算符置于操作数之间。前序表示法具有一些优点,尤其在计算机科学和计算器设计中非常有用。......