Score of Parentheses
Given a balanced parentheses string S
, 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
class Solution {
public int scoreOfParentheses(String S) {
S = '(' + S + ')';
Deque<String> st = new LinkedList<>();
for (char c : S.toCharArray()) {
if (c == ')') {
int sum = 0;
while (!st.peek().equals("("))
sum += Integer.parseInt(st.pop());
st.pop();
st.push(sum == 0 ? "1" : Integer.toString(sum * 2));
} else
st.push(c + "");
}
return Integer.parseInt(st.pop()) / 2;
}
}
Last updated