给定一个平衡括号字符串 S,按下述规则计算该字符串的分数:

() 得 1 分。 AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。 (A) 得 2 * A 分,其中 A 是平衡括号字符串。

力扣

设计思路

感觉是纯纯的脑筋急转弯,根据括号的数量可以写出

(2^x+2^x+...+2^x)^x

以及一系列嵌套的公式

代码实例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
class Solution {
public:
    int scoreOfParentheses(string s) {
        int bal = 0, n = s.size(), res = 0;
        for (int i = 0; i < n; i++) {
            bal += (s[i] == '(' ? 1 : -1);
            if (s[i] == ')' && s[i - 1] == '(') {
                res += 1 << bal;
            }
        }
        return res;
    }
};