Given a balanced parentheses string S
, compute the score of the string based on the following rule:
-
()
has score 1 -
AB
has scoreA + B
, where A and B are balanced parentheses strings. -
(A)
has score2 * A
, where A is a balanced parentheses string.
Example 1:
Input: "()" Output: 1
Example 2:
Input: "(())" Output: 2
Example 3:
Input: "()()" Output: 2
Example 4:
Input: "(()(()))" Output: 6
Note:
-
S
is a balanced parentheses string, containing only(
and)
. 2 <= S.length <= 50
class Solution { public int scoreOfParentheses(String S) { Stack<Integer> stack = new Stack(); int cur = 0; for(char c : S.toCharArray()) { if(c == '(') { stack.push(cur); cur = 0; } else { cur = stack.pop() + Math.max(1, 2 * cur); } } return cur; } }
https://leetcode.com/problems/score-of-parentheses/discuss/141777/C%2B%2BJavaPython-O(1)-Space