首页 > 编程语言 >11天【代码随想录算法训练营34期】 第五章 栈与队列part02(● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项 ● 150. 逆波兰表达式求值)

11天【代码随想录算法训练营34期】 第五章 栈与队列part02(● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项 ● 150. 逆波兰表达式求值)

时间:2024-03-31 22:55:31浏览次数:17  
标签:150 elif return temp 随想录 stk result 求值 former

20. 有效的括号

class Solution:
    def isValid(self, s: str) -> bool:
        stk = []
        upper = ["(", "{", "["]
        lower = [")", "}", "]"]
        dictionary = {")":"(", "}":"{", "]":"["}

        for i in range(len(s)):
            if s[i] in upper:
                stk.append(s[i])
            elif s[i] in lower:
                if not stk or dictionary[s[i]] != stk[-1]:
                    return False
                else:
                    stk.pop()
        if stk:
            return False
        else:
            return True

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

class Solution:
    def removeDuplicates(self, s: str) -> str:
        stk = []
        for i in range(len(s)):
            if not stk:
                stk.append(s[i])
            elif stk[-1] == s[i]:
                stk.pop()
            else:
                stk.append(s[i])
        return ''.join(stk)

150. 逆波兰表达式求值

class Solution:
    def evalRPN(self, tokens: List[str]) -> int:
        stk = []
        operator = ['+', '-', '*', '/']

        for i in tokens:
            if i in operator and stk:
                temp_later = int(stk.pop())
                if not stk:
                    return 0
                temp_former = int(stk.pop())
                if i == '+':
                    temp_result = temp_former + temp_later
                elif i == '-':
                    temp_result = temp_former - temp_later
                elif i == '*':
                    temp_result = temp_former * temp_later
                elif i == '/':
                    temp_result = temp_former / temp_later
                stk.append(temp_result)
            else:
                stk.append(i)
        return int(stk[0])

标签:150,elif,return,temp,随想录,stk,result,求值,former
From: https://www.cnblogs.com/miramira/p/18107438

相关文章

  • 代码随想录算法训练营第11天 | 栈和队列
    20.有效的括号遇到左括号入栈,遇到右括号弹出boolisValid(strings){ stack<char>kuohao; charc; for(chara:s){ switch(a) { case'(': case'{': case'[': kuohao.push(a); break; case')': case'......
  • 代码随想录第11天: 栈的应用
    20.有效的括号力扣题目链接(opensnewwindow)给定一个只包括‘(’,‘)’,‘{’,‘}’,‘[’,‘]’的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例1:输入:“()......
  • 代码随想录第10天:栈和队列基础操作
    语言:Java参考资料:代码随想录 232.用栈实现队列力扣题目链接(opensnewwindow)使用栈实现队列的下列操作:push(x)–将一个元素放入队列的尾部。pop()–从队列首部移除元素。peek()–返回队列首部的元素。empty()–返回队列是否为空。示例:MyQueuequeue......
  • 代码随想录算法训练营第32天| 122.买卖股票的最佳时机 II、55. 跳跃游戏、45.跳跃游戏
    122.买卖股票的最佳时机II题目链接:买卖股票的最佳时机II题目描述:给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出......
  • 代码随想录算法训练营第34天| 1005. K 次取反后最大化的数组和、134. 加油站、135. 分
    1005.K次取反后最大化的数组和题目链接:K次取反后最大化的数组和题目描述:给你一个整数数组nums和一个整数k,按以下方法修改该数组:选择某个下标i并将nums[i]替换为nums[i]。重复这个过程恰好k次。可以多次选择同一个下标i。以这种方式修改数组后,返回数......
  • 代码随想录算法训练营第36天| 435. 无重叠区间、763.划分字母区间、56. 合并区间
    435.无重叠区间题目链接:无重叠区间题目描述:给定一个区间的集合intervals,其中intervals[i]=[starti,endi]。返回需要移除区间的最小数量,使剩余区间互不重叠。解题思想:这道题目和射气球很像。*“需要移除区间的最小数量,使剩余区间互不重叠”*等效于求重叠区......
  • 代码随想录算法训练营第10天 | 栈和队列
    理论基础栈和队列是STL(C++标准库)里面的两个数据结构STL中栈往往不被归类为容器,而被归类为containeradapter(容器适配器)栈的内部结构,栈的底层实现可以是vector,deque,list都是可以的,主要就是数组和链表的底层实现我们常用的SGISTL,如果没有指定底层实现的话,默认是以deque为......
  • 蓝桥杯2019年第十三届省赛真题-数列求值
    一、题目数列求值【问题描述】给定数列1,1,1,3,5,9,17,…,从第4项开始,每项都是前3项的和。求第20190324项的最后4位数字。【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个4位整数(提示:答案的千位不为0),在提交答案时只填......
  • 代码随想录算法训练营第9天 | 字符串(待补充)
    28.实现strStr()KMP算法KMP算法:字符串匹配问题,提前构建next表next表(前缀表):利用成功匹配的经验,长度为t的前后缀相匹配,next[j]=tnext表再改进:利用失败匹配的经验,如果P[j]和P[t]相等,仍然是徒劳?......
  • 代码随想录算法训练营第8天 | 字符串
    344反转字符串voidreverseString(vector<char>&s){chartmp; inti=0,j=s.size()-1; while(i<j) { tmp=s[i]; s[i]=s[j]; s[j]=tmp; i++;j--; }}swap库函数的实现:位运算法——按位异或s[i]^=s[j];s[j]^=s[i];s[i]^=s[j];54......