LeetCode 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. 括号的分数 | 中等 | 栈/数学 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!