题目浅析

  • 想查看原题可以点击题目链接

  • 简单地说,就是给一个由 () 组成的字符串,要求根据规则,统计字符串的分数。

思路分享

代码解答(强烈建议自行解答后再看)

  • 参考题解
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution:
def scoreOfParentheses(self, s: str) -> int:
stk = list()
for c in s:
if c == '(':
stk.append(c)
continue
if not stk:
continue
# 下面就是遇到括号右部,要结算的时候
tmp_sum = 0
while True:
last = stk.pop()
if last == '(':
# 第一种情况,发现栈顶就是括号左部,结算一分
if tmp_sum == 0:
tmp_sum = 1
break
# 第二种情况,结算括号内部乘二
else:
tmp_sum *= 2
break
else:
# 这是累计括号内数字和,准备乘二
tmp_sum += last
stk.append(tmp_sum)

return sum(stk)