题目
给定一个平衡括号字符串 S,按下述规则计算该字符串的分数:
() 得 1 分。
AB 得 A + B 分,其中 A 和 B 是平衡括号字符串。
(A) 得 2 * A 分,其中 A 是平衡括号字符串。
示例 1:
输入: "()" 输出: 1
示例 2:
输入: "(())" 输出: 2
示例 3:
输入: "()()" 输出: 2
示例 4:
输入: "(()(()))" 输出: 6
解题
方法一:栈
class Solution { public: int scoreOfParentheses(string s) { stack<int> st; st.push(0); for(char c:s){ if(c=='('){ st.push(0); }else{ int cur=st.top(); st.pop(); st.top()+=max(cur*2,1); } } return st.top(); } };