题目简介:
给定一个平衡括号字符串 S
,按下述规则计算该字符串的分数:
()
得 1 分。AB
得A + B
分,其中 A 和 B 是平衡括号字符串。(A)
得2 * A
分,其中 A 是平衡括号字符串。
示例 1:
1 | 输入: "()" |
示例 2:
1 | 输入: "()()" |
示例 3:
1 | 输入: "(()(()))" |
提示:
S
是平衡括号字符串,且只含有(
和)
。2 <= S.length <= 50
思路:
利用栈,遇到(
时压入0
,遇到)
时则将栈中遇到0
(也就是对应的左括号)之前的所有数进行相加,如果相加count
为0,则说明是()
形式,否则,则为(A+B)
形式,所以将max(2 * count, 1)
压入栈。
最后,返回栈中所有数的和即可。
代码如下:
1 | class Solution { |