题目链接
思路
我们通过观察发现,()
是唯一贡献分数的结构,外括号只是为该结构添加了一些乘数。所以我们只需要关心 ()
。
我们用 ddd 维护当前括号的深度,对于每个 (
我们将深度加一,对于每个 )
,我们将深度减一。当我们遇到 ()
时,我们将 \(2^d\) 加到答案中。
我们举个实际的例子,以 (()(()))
为例,我们首先找到内部两个闭合括号 ()
,然后将分数加上对应的 \(2^d\)。实际上,我们是在计算 (()) + ((()))
的分数。
代码
class Solution {
public int scoreOfParentheses(String s) {
int result = 0;
int d = 0;
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) == '('){
d++;
}else{
d--;
if(s.charAt(i - 1) == '('){
result += 1 << d;
}
}
}
return result;
}
}
标签:分数,856,int,我们,括号,result,LeetCode
From: https://www.cnblogs.com/shixuanliu/p/17164366.html