Skip to main content
Back to problems
#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)
LeetCode
solution.rs
/*
 * 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]
  }
}