LC 856. 括号的分数 (opens new window) (opens new window)
中等
# 问题描述
给定一个平衡括号字符串 S
,按下述规则计算该字符串的分数:
()
得1
分。AB
得A + B
分,其中A
和B
是平衡括号字符串。(A)
得2 * A
分,其中A
是平衡括号字符串。
示例 1:
输入: "()"
输出: 1
示例 2:
输入: "(())"
输出: 2
示例 3:
输入: "()()"
输出: 2
示例 4:
输入: "(()(()))"
输出: 6
提示:
S
是平衡括号字符串,且只含有(
和)
。2 <= S.length <= 50
# 深度优先搜索
遍历字符串,若 "(" 后为 ")",这个情况得 1 分,若 "(" 后为 "(",则递归处理后一个字符开始的子字符串,得到其分数后 ,递归结束后即为最终分数。
/**
* @param {string} s
* @return {number}
*/
var scoreOfParentheses = function (s) {
const n = s.length
let idx = 0
const dfs = () => {
let sum = 0
while (idx < n && s[idx] === '(') {
idx++
if (s[idx] === ')') {
sum += 1
} else {
sum += dfs() * 2
}
idx++
}
return sum
}
return dfs()
}
- 时间复杂度:
- 空间复杂度:
上次更新: 2023/01/31 19:48:05
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 , 转载请注明出处!