856 Score of Parentheses
856. Score of Parentheses
1. Question
Given a balanced parentheses stringS
, compute the score of the string based on the following rule:
()
has score 1AB
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
2. Implementation
(1) Stack
class Solution {
public int scoreOfParentheses(String S) {
Stack<Integer> stack = new Stack();
for (char c : S.toCharArray()) {
if (c == '(') {
stack.push(-1);
}
else {
int score = 0;
while (stack.peek() != -1) {
score += stack.pop();
}
stack.pop();
// score不等于0时,说明有嵌套的括号出现,分数加倍
stack.push(score == 0 ? 1 : 2 * score);
}
}
int res = 0;
while (!stack.isEmpty()) {
res += stack.pop();
}
return res;
}
}
3. Time & Space Complexity
Stack: 时间复杂度: O(n), 空间复杂度: O(n)
Last updated
Was this helpful?