Description
Given a balanced parentheses string s
, return the score of the string.
The score of a balanced parentheses string is based on the following rule:
"()"
has score1
.AB
has scoreA + B
, whereA
andB
are balanced parentheses strings.(A)
has score2 * A
, whereA
is a balanced parentheses string.
Example 1:
Input: s = ”()” Output: 1
Example 2:
Input: s = ”(())” Output: 2
Example 3:
Input: s = ”()()” Output: 2
Constraints:
2 <= s.length <= 50
s
consists of only'('
and')'
.s
is a balanced parentheses string.
Code
class Solution {
public:
int scoreOfParentheses(string s) {
int score = 0;
stack<char> st;
for(auto ch: s) {
if(ch == '(') {
st.push(score);
score = 0;
} else {
score = st.top() + max(2 * score, 1);
st.pop();
}
}
return score;
}
};