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.
class Solution:
def scoreOfParentheses(self, s: str) -> int:
ans = d = 0
for i, c in enumerate(s):
if c == '(':
d += 1
else:
d -= 1
if s[i - 1] == '(':
ans += 1 << d
return ans
class Solution {
public int scoreOfParentheses(String s) {
int ans = 0, d = 0;
for (int i = 0; i < s.length(); ++i) {
if (s.charAt(i) == '(') {
++d;
} else {
--d;
if (s.charAt(i - 1) == '(') {
ans += 1 << d;
}
}
}
return ans;
}
}
class Solution {
public:
int scoreOfParentheses(string s) {
int ans = 0, d = 0;
for (int i = 0; i < s.size(); ++i) {
if (s[i] == '(') {
++d;
} else {
--d;
if (s[i - 1] == '(') {
ans += 1 << d;
}
}
}
return ans;
}
};
func scoreOfParentheses(s string) int {
ans, d := 0, 0
for i, c := range s {
if c == '(' {
d++
} else {
d--
if s[i-1] == '(' {
ans += 1 << d
}
}
}
return ans
}