# 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.

&#x20;

**Example 1:**

```
Input: s = "()"
Output: 1
```

**Example 2:**

```
Input: s = "(())"
Output: 2
```

**Example 3:**

```
Input: s = "()()"
Output: 2
```

&#x20;

**Constraints:**

* `2 <= s.length <= 50`
* `s` consists of only `'('` and `')'`.
* `s` is a balanced parentheses string.

```python
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:

```python
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
            
        
                
```
