856. 括号的分数

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()