给定一个平衡括号字符串 S
,按下述规则计算该字符串的分数:
()
得 1 分。AB
得A + B
分,其中 A 和 B 是平衡括号字符串。(A)
得2 * A
分,其中 A 是平衡括号字符串。
示例 1:
输入: "()"
输出: 1
示例 2:
输入: "(())"
输出: 2
示例 3:
输入: "()()"
输出: 2
示例 4:
输入: "(()(()))"
输出: 6
提示:
S
是平衡括号字符串,且只含有(
和)
。2 <= S.length <= 50
题目分析:
按照给定的3条规则进行计算,从3条规则中可以看出,涉及到的知识是括号匹配问题,所以可以运用栈的知识来解决:如果遇到左括号则进栈;遇到右括号的时候,如果右括号的左边是左括号,则得出结果1进栈;如果右括号左边是数字,且数字的左边是左括号,则进行数字乘2操作,将结果入栈;如果右括号左边是数字,且数字的左边还是数字,则进行两个数字相加的操作,将结果入栈;最后,只需要将栈中的各个数字相加即得出结果。
代码实现:
public int scoreOfParentheses(String S) { LinkedList<String> list = new LinkedList<>