LeetCode 856. 括号的分数

题目描述

856. 括号的分数

思路分析

解法一:深度计分(推荐)

核心思路

  • 遇到 “()” 时贡献为 2^depth,其中 depth 为当前嵌套深度。
  • 扫描字符串,用 depth 记录当前层数。
  • 累加所有贡献即可。


复杂度分析

  • 时间复杂度:O(n),其中 n 表示字符串长度。
  • 空间复杂度:O(1)。
class Solution {
    public int scoreOfParentheses(String s) {
        int depth = 0;
        int score = 0;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '(') {
                depth++;
            } else {
                depth--;
                if (s.charAt(i - 1) == '(') {
                    score += 1 << depth;
                }
            }
        }
        return score;
    }
}
func scoreOfParentheses(s string) int {
	depth := 0
	score := 0
	for i := 0; i < len(s); i++ {
		if s[i] == '(' {
			depth++
		} else {
			depth--
			if s[i-1] == '(' {
				score += 1 << depth
			}
		}
	}
	return score
}

相似题目

题目 难度 考察点
32. 最长有效括号 困难
20. 有效的括号 简单
921. 使括号有效的最少添加 中等
1249. 移除无效的括号 中等
856. 括号的分数 中等 栈/数学
本文作者:
本文链接: https://hgnulb.github.io/blog/2025/39097987
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!