856. Score of Parentheses

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.

From: LeetCode
Link: 856. Score of Parentheses


Solution:

Ideas:
  • “()” at depth 1 → contributes 1.

  • “(())” → inner “()” at depth 2 → contributes 2.

  • “(()())” → two inner pairs at depth 2 → contributes 2 + 2 = 4.

  • “()(())” → first “()” gives 1, second (()) gives 2 → total 3.

Code:
int scoreOfParentheses(char* s) {
    int score = 0;
    int depth = 0;
    int n = strlen(s);

    for (int i = 0; i < n; i++) {
        if (s[i] == '(') {
            depth++; // going deeper
        } else {
            depth--; // closing one level
            if (s[i-1] == '(') {
                // "()" found → add 2^depth
                score += 1 << depth;
            }
        }
    }
    return score;
}
Logo

一座年轻的奋斗人之城,一个温馨的开发者之家。在这里,代码改变人生,开发创造未来!

更多推荐