856. Score of Parentheses

Medium


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.

class Solution:
    def scoreOfParentheses(self, s: str) -> int:
        stack = []
        score = 0
        for index, char in enumerate(list(s)):
            if char == "(":
                stack.append(score)
                score = 0
            else:
                score = stack.pop() + max(score*2, 1)
        return score
            
        
                

Solution 2:

class Solution:
    def scoreOfParentheses(self, s: str) -> int:
        score = 0
        par = 0
        for index, char in enumerate(list(s)):
            if char == "(":
                par += 1
            else:
                par -= 1
                if s[index-1] == "(":
                    score += (1<<par)
        return score
            
        
                

Last updated