题目简介:
给定一个平衡括号字符串 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 { |