括号字符串的分数:题目解析与多种解法详解
📌 题目描述
给定一个平衡括号字符串 S
,我们按以下规则对其进行评分:
()
的得分为1
;- 如果
A
和B
是平衡括号字符串,那么AB
的得分为A + B
; - 如果
A
是平衡括号字符串,则(A)
的得分为2 * A
。
示例:
输入: "()" 输出: 1
输入: "(())" 输出: 2
输入: "()()" 输出: 2
输入: "(()(()))" 输出: 6
我们需要实现一个函数 scoreOfParentheses(S: str) -> int
,准确计算任意给定平衡括号字符串的得分。
🧠 解题分析
观察题目可以发现,这是一个典型的括号匹配结构分析问题,本质上考察的是:
- 表达式结构的嵌套关系;
- 如何用合理的数据结构(如栈)来模拟括号配对与计算;
- 是否能用递归、分治或数学方式理解括号的分数规律。
🛠 解法一:使用栈(标准方法)
💡 思路
利用**栈(Stack)**来保存括号的结构及中间结果:
- 每当遇到
'('
,表示一个新的结构开始,压入栈中; - 每当遇到