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 score1.ABhas scoreA + B, whereAandBare balanced parentheses strings.(A)has score2 * A, whereAis 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 <= 50sconsists of only'('and')'.sis a balanced parentheses string.
答案
func scoreOfParentheses(s string) int {
cur := 0
stack := make([]int, 0)
max := func(a,b int) int{
if a > b {
return a
}
return b
}
for _, e := range s {
if e == '(' {
stack = append(stack, cur)
cur = 0
} else {
pop := stack[len(stack)-1]
stack = stack[:len(stack)-1]
//内层值最少为1
cur = pop + max(cur * 2 ,1)
}
}
return cur
}