Day 14
Date: October 9, 2022 8:53 AM
LinkedIn: https://leetcode.cn/problems/score-of-parentheses/
Title: 括号的分数
用栈模拟
class Solution:
def scoreOfParentheses(self, s: str) -> int:
stack = deque() #栈 比list的append pop操作更快
stack.append(0) # 以防s为空时stack[-1]报错(下标异常)
for ch in s:
if(ch == '('):# 左括号压0入栈
stack.append(0)
else:
v = stack.pop() # 取得当前封闭左括号前的值
if(v == 0): # 封闭前为0即不是嵌套关系,A+B型
stack[-1] += 1
else: # 封闭前不为0 即存在嵌套关系, 2*A型
stack[-1] += v*2
# 计算的值都加到栈顶,即 A+B型 栈顶为同深度的平衡括号字符串分数
return stack[-1]
Python 中 实现栈的操作 有三种:
1)list
2)collections.deque
3)queue.LifoQueue
- list
- 创建stack = []
- from collections import deque
- 创建stack = deque()
- deque可以提供O(1)时间的append和pop操作,而列表则需要O(n)时间.
前两种 入栈出栈操作都为 append() , pop() , 栈大小为 len(stack)
取栈顶元素为stack[ -1] (使用时注意stack不能为空)
- from queue import LifoQueu
- 创建stack= LifoQueue(maxsize = 5)
- 栈大小stack.qsize()
入栈为put()
出栈为get()