力扣-856.括号的分数

本文最后更新于:2022年10月9日 下午

题目描述

第一张图

实现

哈哈家人们!今天的题目又是找规律(
来看题目告诉我们的,再多看看几个例子,我们可以总结出下面的规律:
> ‘()’字符串,就是一个1
> ‘)(‘字符串,就是一个+
> ‘((‘字符串,就是2
> ‘))’字符串则是告诉我们,需要从栈中取数出来进行运算,直到进行过
运算为止
所以我们还需要两个栈,一个用来保存数字,一个用来保存数组。然后遍历题目给我们的字符串即可。当然最后不能忘记把运算符栈清空。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution:
def scoreOfParentheses(self, s: str) -> int:
nums = deque()
ops = deque()
for i in range(1, len(s)): # 因为每次要读取两个字符,所以从第二个字符开始读
if s[i - 1: i + 1] == '()':
nums.append(int(1))
elif s[i - 1: i + 1] == ')(':
ops.append('+')
elif s[i - 1: i + 1] == '((':
nums.append(int(2))
ops.append('*')
else:
while ops.pop() != '*':
nums.append(nums.pop() + nums.pop())
nums.append(nums.pop() * nums.pop())
while ops:
ops.pop()
nums.append(nums.pop() + nums.pop())
return nums.pop()

(一看题解又是被薄纱,无论是编程思维还是数学思维这块还是不如人家,把这个想成树也是厉害,用dfs出答案。)

这里有一只爱丽丝

希望本文章能够帮到您~


力扣-856.括号的分数
https://map1e-g.github.io/2022/10/09/leetcode-856/
作者
MaP1e-G
发布于
2022年10月9日
许可协议