#856
Medium Algorithms Score of parentheses
String Stack
63.6% acceptance
Feb 22, 2026
5598
236
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.
Solution
Rust
Time O(n)
Space O(n)
/*
* 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.
*/
impl Solution {
pub fn score_of_parentheses(s: String) -> i32 {
let mut stack = vec![0i32];
for c in s.chars() {
if c == '(' {
stack.push(0);
} else {
let top = stack.pop().unwrap();
let prev = stack.last_mut().unwrap();
*prev += (2 * top).max(1);
}
}
stack[0]
}
}