Ideas
遇到括号那基本就是用栈了。
括号的分数会因为深度的增加而成倍增加,所以利用栈的时候需要记录深度。
遇到一个(的时候,将深度+1,并且新的深度得分置为0,遇到一个)的时候,将深度的得分乘二并加到上一层的深度。
如果遇到的是(),那么只将得分加一。
Code
Python
class Solution:
def scoreOfParentheses(self, s: str) -> int:
stack = [0]
for i in s:
if i == '(':
stack.append(0)
else:
v = stack.pop()
stack[-1] += max(2 * v, 1)
return stack.pop()