856 Score of Parentheses
题目
题解
这道题目的本质是:给定表达式的计算规则,计算出输入表达式的值。这里给的计算规则并不复杂,我们用栈来逐个计算(同时也是化简)表达式,最后得出一个数值即可。具体做法是:将字符串输入读到栈中,读到右括号时进行求值,’()’化简为1,’(数字)’化简为数字×2。所有括号处理完之后,将栈中所有数字加到一起,得到的总和就是答案。
代码
class Solution:
def scoreOfParentheses(self, s: str) -> int:
stack = []
for symbol in s:
if symbol != ')':
stack.append(symbol)
else:
score = 0
pop = ''
while pop != '(' and len(stack) > 0:
pop = stack.pop()
if isinstance(pop, int):
score = score + pop
if pop == '(':
score = (1 if score == 0 else score*2)
stack.append(score)
return sum(stack)