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 score1
. -
AB
has scoreA + B
, whereA
andB
are balanced parentheses strings. -
(A)
has score2 * A
, whereA
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.
SOLUTION:
class Solution:
def scoreOfParentheses(self, s: str) -> int:
if s == '':
return 0.5
score = 0
pos = [0]
ctr = 0
for i, c in enumerate(s):
if c == '(':
ctr += 1
else:
ctr -= 1
if ctr == 0:
pos.append(i + 1)
n = len(pos)
for i in range(n - 1):
score += 2 * self.scoreOfParentheses(s[pos[i] + 1 : pos[i + 1] - 1])
return int(score)
Top comments (0)