题目
思路
如下图所示,每一条直线代表一层括号,每多一层括号意味着这个数变成了原来的两倍,设一个深度deep用来表示括号的层数,每找到一个 “(” ,deep的值就增加1,同层的deep相同,如果遇到最底层的括号,也就是 “(” 的下一个就是 “)” ,结果res加上2的deep次方
时间
代码
class Solution {
public int scoreOfParentheses(String S) {
int res=0;
int deep=-1;
for(int i=0;i<S.length();i++){
if(S.charAt(i)=='('){
deep++;
}
if(S.charAt(i)==')'){
deep--;
}
if(S.charAt(i)=='('&&S.charAt(i+1)==')'){
res+=(int)(Math.pow(2,deep));
}
}
return res;
}
}