Skip to main content

856. Score of Parentheses

/*
* @lc app=leetcode id=856 lang=cpp
*
* [856] Score of Parentheses
*
* https://leetcode.com/problems/score-of-parentheses/description/
*
* algorithms
* Medium (63.90%)
* Likes: 5526
* Dislikes: 229
* Total Accepted: 205.7K
* Total Submissions: 322.7K
* Testcase Example: '"()"'
*
* 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 score 1.
* AB has score A + B, where A and B are balanced parentheses strings.
* (A) has score 2 * A, where A 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.
*
*
*/

// @lc code=start
class Solution {
public:
int scoreOfParentheses(string s) {
int res = 0;
stack<int> stk;
for (auto c : s) {
if(c == '(') {
stk.push(res);
res = 0;
} else {
if (res == 0) {
res = 1 + stk.top();
} else {
res = res * 2 + stk.top();
}
stk.pop();
}
}
return res;
}
};
// @lc code=end