题目

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)